TestNG — исключение только при определении 6 или более тестов

#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 я не вижу никаких очевидных случаев, когда ссылка должна быть выпущена, но, возможно, кто-то, более знакомый с классами, может взять ее оттуда.