Я использую JUnit 4.10 на Eclipse 3.7.Я делаю тестирование базы данных: используется база данных SQLite3 с sqlitejdbc .Я попытался запустить тесты на Windows и Linux, и вот мои наблюдения:
- В Windows 7 x64 тесты выполняются быстрее (~ 0,6 с на тест).Я получаю ошибки об «Не могу открыть файл базы данных».Они кажутся прерывистыми (иногда один и тот же тест может пройти один раз, а следующий запуск не пройден)
- В Ubuntu 11.10 x64 тесты выполняются медленно (~ 3 с на тест).Я получаю ошибки о "базе данных заблокирована".В отличие от ошибок Windows, которые возникают с перерывами, здесь, похоже, ошибки происходят в одном и том же тесте / файле, и как только возникает ошибка блокировки, все последующие тесты не выполняются.
ОБНОВЛЕНИЕ
Код для тестов можно найти на 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();
}
Я думал, что все еще хочу настроить свою базу данных на случай, если я не хочу вызывать весь пакет.Я думаю, что проблема связана с этим, но я не уверен, как именно это вызывает проблему.Похоже, что даже если я вызову отдельный тестовый класс, мои настройки для пакета будут выполнены?Или, если нет, как я могу убедиться, что он запускается один раз, если тест не вызывается из пакета?
- Старый пост удален -