我在Eclipse 3.7上運行JUnit 4.10。我正在做數據庫測試:使用的數據庫是SQLite3與sqlitejdbc。我嘗試在Windows和Linux上運行測試,這裏是我的觀察結果:SQLite數據庫在JUnit測試中鎖定
- 在Windows 7 x64上,測試運行速度更快(每次測試約0.6s)。我確實收到有關「無法打開數據庫文件」的錯誤。它們似乎是間歇性的(有時在下次運行失敗時,相同的測試可能會通過一次)
- 在Ubuntu 11.10 x64上,測試速度很慢(每次測試約3秒)。我收到有關「數據庫鎖定」的錯誤。與Windows的間歇性錯誤不同,在這裏,錯誤似乎發生在同一個測試/文件上,一旦發生鎖定錯誤,所有後續測試失敗。
UPDATE
你可以找到測試的代碼上GitHub。我想這個問題可能是與我的@BeforeClass
,@Before
和測試套件是如何設置的
我有一個像
@RunWith(Suite.class)
@SuiteClasses({ DataAccessTests.class, SimpleQueryTests.class, ... })
public class DataAccessTestSuite {
@BeforeClass
public static void setUpDatabase() throws SQLException, ClassNotFoundException {
DataAccess.setEnvironment(DataAccess.DATABASE_TESTING);
Connection conn = DataAccess.getConn();
// truncate tables: simply DELETE statements
truncateTables(conn);
// insert test data, INSERT statements
insertTestData(conn);
}
然後在我的測試類測試套件我有一個@Before
也呼籲建立。
public class EventsDataAccessTests {
@Before
public void setup() throws SQLException, ClassNotFoundException {
DataAccessTestSuite.setUpDatabase();
}
我在想,如果我不想調用整個套件,我仍然想要設置我的數據庫。我認爲問題與此有關,但我不確定它究竟是如何造成問題的。看起來,即使我打電話給個人測試班,我的套件設置運行?或者如果不是,如果測試未從套件中調用,我如何確保它運行一次?
- 舊帖子刪除 -
你同時運行單元測試嗎? – kan 2012-04-05 10:42:19
我使用Eclipse運行測試,沒有多個eclipse實例或類似的東西,所以測試不應該同時運行? – 2012-04-05 11:06:45
如果我有類似'@SuiteClasses({DataAccessTests.class,SimpleQueryTests.class,SimpleInsertTests.class,SimpleUpdateTests.class,...})'個別測試類是否同時運行? – 2012-04-05 11:08:53