我正在嘗試使用H2或HSQL進行單元測試。但我的應用程序不是春天和冬眠。看起來大部分的參考資料都是針對單元測試的內存數據庫中的HSQL/H2的spring和hibernate。Junit with HSQL/H2 without Spring/Hibernate
有人能指出一個正確的參考,其中只有hsql/h2與junit一起使用嗎?欣賞你的時間。
我正在嘗試使用H2或HSQL進行單元測試。但我的應用程序不是春天和冬眠。看起來大部分的參考資料都是針對單元測試的內存數據庫中的HSQL/H2的spring和hibernate。Junit with HSQL/H2 without Spring/Hibernate
有人能指出一個正確的參考,其中只有hsql/h2與junit一起使用嗎?欣賞你的時間。
我後容易做這樣的事情:
在@Before方法我建立一個內存數據庫的連接,這樣的事情:
@Before
public void setup()
{
this.dbConnection = DriverManager.getConnection("jdbc:hsqldb:mem:testcase;shutdown=true", "sa", null);
}
連接存儲在一個實例變量,所以它適用於每個測試。
那麼,如果所有測試共享相同的表,我也創建這些設置()方法中,否則每個測試創建自己的表:
@Test
public void foo()
{
Statement stmt = this.dbConnection.createStatement();
stmt.execute("create table foo (id integer)");
this.dbConnection.commit();
... now run the test
}
在@After方法我SIMPLIC關閉連接這指的內存數據庫已被清除,並下試用乾淨的版本上運行:
@After
public void tearDown()
throws Exception
{
dbConnection.disconnect();
}
有時候我需要運行unitt的測試agains一個真正的數據庫服務器(你不能測試的Postgres或Oracle特定功能使用HSQLDB或H2)。在這種情況下,我只爲每個Testclass建立連接,而不是爲每個測試方法建立一次連接。然後我有方法刪除所有對象以清理模式。
這可以放在一個小實用程序類,以避免一些樣板代碼。如果你想以某種方式外部化測試數據,Apache的DbUtils也可以讓DbUnit變得更容易。
我知道我有點遲到了:-)
我有同樣的問題而回,並創建了使用@rule機制設置的內存數據庫的JUnit測試JUnit的整合。我發現它是測試我的數據庫集成代碼的一個真正簡單而好的方法。反饋是值得歡迎的。
您使用的數據庫API是什麼? JDBC? –