У меня есть вспомогательный класс базы данных, который вставляет, удаляет, сохраняет, соединяет и т. Д., И я пишу тест для этого. Однако, когда я пишу тестовый пример, должен ли он быть независимым от тестового класса?Должен ли я вызывать методы из класса, который тестируется при модульном тестировании?
Если это будет так: 1-)
@Test
public void testDelete() throws SQLException {
// Given
String dateStr = "09-May-2016";
String word = "testWord";
derbyDb.save(dateStr, word, 9);
derbyDb.save(dateStr, word, 11);
// When
assertEquals(2, derbyDb.contain(dateStr, word));
derbyDb.delete();
// then
assertEquals(0, derbyDb.contain(dateStr, word));
}
(Вы видите здесь, я использовал 'спасти' метод)
2-)
@Test
public void testDelete() throws SQLException {
// Given
String dateStr = "09-May-2016";
String word = "testWord";
PreparedStatement insertemp = conn
.prepareStatement("insert into " + tableName + "(PUBLISHDATE,WORD,FREQUENCY) values(?,?,?)");
insertemp.setString(1, dateStr);
insertemp.setString(2, word);
insertemp.setInt(3, frequency);
insertemp.executeUpdate();
// When
assertEquals(2, derbyDb.contain(dateStr, word));
derbyDb.delete();
// then
assertEquals(0, derbyDb.contain(dateStr, word));
}
Который один. истинно или лучше? Или должен ли модуль тестирования быть независимым от других функций?
EDIT: AssertEquals, добавленные перед удалением.
EDIT-2: Во втором варианте должен быть только один метод, который является «удалением» и будет независим от других методов класса. Поэтому вместо того, чтобы содержать метод, должен быть запрос.
В любом случае вы должны 'assertEquals (2, derbyDb.contain (dateStr, word));' перед удалением, поэтому вы знаете, что 'delete' является причиной, по которой она равна нулю после. –
Первый будет более ясным, если * testDelete * зависит (например, с [TestNG «dependsOn»] (http://testng.org/javadocs/org/testng/annotations/Test.html#dependsOnMethods--)) on методы тестирования для 'save'. – Tom
Я бы использовал второй вариант - вы хотите протестировать один конкретный метод, и тест для этого метода должен быть независимым от других методов. Ваш пример прост, но если он становится более сложным, ваши тесты могут стать запутанным беспорядком в противном случае, и не будет ясно, что каждый тестовый метод точно проверяет и зависит от него. – Jesper