TestContainers:現代資料庫的測試方法 -Gundu
TestContainers是一個開源專案,它提供可以在Docker容器中執行的任何東西的輕量級,一次性的例項。它具有Java,Python,Rust,Go,Scala和許多其他語言的繫結。
啟動MySQL資料庫測試就像新增3行程式碼一樣簡單:
class SimpleMySQLTest { private MySQLContainer mysql = new MySQLContainer(); @Before void before() { mysql.start(); // You can use mysql.getJdbcUrl(), mysql.getUsername() and // mysql.getPassword() to connect to the container } @After void after() { mysql.stop(); } // [...] } |
TestContainers提供@ Rule / @ClassRule整合,以允許JUnit 4控制容器的生命週期。它還提供了一個@Container標註為Junit5。這些實用程式將其簡化為僅一行程式碼。
HibernateORM是與Java中的資料庫進行互動的最受歡迎的選擇。要將您的Hibernate類連線到TestContainers,就這麼簡單:
class SimpleHibernateTest { @Rule private MySQLContainer mysql = new MySQLContainer().withDatabaseName("local").withUsername("USER").withPassword("PWD"); @Before public void before() { final Configuration configuration = new Configuration(); // Base configuration configuration.configure("hibernate.cfg.xml") final Properties properties = new Properties(); properties.setProperty("hibernate.hikari.dataSource.url", mysql.getJdbcUrl()); properties.setProperty("hibernate.hikari.datasource.user", "USER"); properties.setProperty("hibernate.hikari.datasource.password", "PWD"); configuration.addProperties(properties); configuration.addAnnotatedClass(ClassToTest.class); } @Test public void test() { // write test case here } } |
侷限性:
當然,使用TestContainers有缺點。與H2相比,測試用例要慢得多。有減輕這種情況的方法。該@rule註釋帶來了為讓班上所有的測試用例一個新的資料庫。建立資料庫是一項昂貴的操作,我們可以使用@ClassRule對其進行最佳化。使用@ClassRule時,將為該類中的所有測試建立一個資料庫。在這種情況下,確保在執行測試用例後清理資料庫中的資料非常重要,以確保測試隔離。這可以透過使用@After生命週期來完成。
另一個缺點是,如果無法下載docker映像,則測試用例可能會失敗。但是,與使用TestContainers的好處相比,這些缺點很小。
相關文章
- 使用TestContainers進行容器Docker測試 – EmmanouilAIDockerUI
- 大資料測試與 傳統資料庫測試大資料資料庫
- 資料庫測試指南資料庫
- Laravel 中使用整合測試時的資料庫設定方法Laravel資料庫
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫
- 通過sysbench工具實現MySQL資料庫的效能測試MySql資料庫
- PHP 單元測試與資料庫測試PHP資料庫
- 2.4. 測試資料庫資料庫
- MySQL製作具有千萬條測試資料的測試庫MySql
- [資料庫]000 - ?Sysbench 資料庫壓力測試工具資料庫
- 來 ! 玩玩PHPUnit的資料庫測試 (上)PHP資料庫
- Oracle 閃回資料庫測試Oracle資料庫
- PostgreSQL:資料庫連結測試SQL資料庫
- oracle測試資料庫啟用Oracle資料庫
- MySQL 資料庫生成 10000 條測試資料MySql資料庫
- 測試面試(三)--資料庫與linux面試資料庫Linux
- Go 單元測試之Mysql資料庫整合測試GoMySql資料庫
- 關於資料庫壓力測試的故事資料庫
- 【Mysql】資料庫索引,百萬資料測試索引效果MySql資料庫索引
- 建立一個SQL測試資料庫 - 消費者資料庫SQL資料庫
- 組態王與Access資料庫通訊--④資料庫測試資料庫
- 保證資料庫質量安全:從0開始的資料庫測試資料庫
- 資料庫基準測試工具 sysbench資料庫
- 達夢資料庫之初步測試資料庫
- 軟體測試之資料庫測試技術系列七資料庫
- AMD R7 7700(非 X)現身 SiSoftware 測試資料庫資料庫
- 一次資料庫壓力測試的故事資料庫
- Laravel資料庫測試的另一種方案-SQLiteLaravel資料庫SQLite
- 使用dbunit測試spring + mybatis的資料庫應用SpringMyBatis資料庫
- Redis快速產生測試資料的三種方法Redis
- 【中國資料庫前世今生】資料儲存管理的起源與現代資料庫發展啟蒙資料庫
- 資料庫效能測試:sysbench用法詳解資料庫
- 軟體測試之資料庫系列五資料庫
- 軟體測試之資料庫系列四資料庫
- 軟體測試之資料庫系列三資料庫
- 軟體測試之資料庫系列二資料庫
- 軟體測試之資料庫系列一資料庫
- 軟體測試之資料庫系列六資料庫