#spring #unit-testing #testing #testng
#spring #модульное тестирование #тестирование #testng
Вопрос:
Приведенный ниже код завершается с ошибкой, но только если определено 6 или более тестов. То есть, независимо от того, какие тесты у меня есть. Я попытался создать 5 повторяющихся тестов, которые все прошли, а затем добавить еще один, чтобы увидеть, что приведенное ниже утверждение не выполняется. У кого-нибудь есть идея, что происходит?
Я запускаю Spring MVC, версию TestNG 5.8, с базой данных Neo4J, используя Spring Data Graph.
@ContextConfiguration(locations = {"classpath:application-context-test.xml"})
public class EntityTest extends AbstractTestNGSpringContextTests {
@Autowired
private GraphDatabaseContext graphDatabaseContext;
@BeforeClass
protected void setUp() throws Exception {
Assert.assertNotNull(graphDatabaseContext);
}
@Test(groups = {"functest"})
public void testEmployeeCreation() throws Exception {
//please note that these methods are _literally_ empty.
}
@Test(groups = {"functest"})
public void test2EmployeeCreation() throws Exception {
}
@Test(groups = {"functest"})
public void test3EmployeeCreation() throws Exception {
}
@Test(groups = {"functest"})
public void test4EmployeeCreation() throws Exception {
}
@Test(groups = {"functest"})
public void test5EmployeeCreation() throws Exception {
}
@Test(groups = {"functest"})
public void test6EmployeeCreation() throws Exception {
}
}
testNG.xml:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Maven Tests" verbose="1" annotations="JDK">
<parameter name="echo.timeout" value="60000"/>
<test name="Functional and Check-in Tests">
<groups>
<run>
<include name="functest"/>
<include name="checkintest"/>
</run>
</groups>
<classes>
<class name="com.noname.entity.EntityTest"/>
</classes>
</test>
</suite>
Testlog:
java.lang.AssertionError:
Expected :true
Actual :false
at org.testng.Assert.fail(Assert.java:84)
at org.testng.Assert.failNotEquals(Assert.java:438)
at org.testng.Assert.assertTrue(Assert.java:32)
at org.testng.Assert.assertNotNull(Assert.java:352)
at org.testng.Assert.assertNotNull(Assert.java:342)
at com.noname.entity.EntityTest.setUp(EntityTest.java:25)
Комментарии:
1. Не могли бы вы опубликовать полный тестовый класс, потому что эта часть, очевидно, не содержит проблемы. И, кстати, есть ли какое-либо одноэлементное или статическое поле, которое может вызвать проблему?
2. Является ли исключение причиной
assertNotNull
сбоя или это исключение spring? — Во втором случае, пожалуйста, опубликуйте исключение и stacktrace тоже.3. @Ralph: Вот так! Спасибо за ваш ответ.
4. Контекст базы данных не используется в этих простых тестах. Что произойдет, если вы удалите его? Что-то еще сломается? Что в вашей конфигурации XML?
Ответ №1:
Когда вы сталкиваетесь с подобной проблемой, первое, о чем вы думаете, это то, используется ли какой-либо ресурс (например, подключения к базе данных или открытые файлы). Проверьте, имеет ли значение удаление graphDatabaseContext
. По общему признанию, при просмотре api для GraphDatabaseContext
и AbstractTestNGSpringContextTests
я не вижу никаких очевидных случаев, когда ссылка должна быть выпущена, но, возможно, кто-то, более знакомый с классами, может взять ее оттуда.