В модульном тесте TestNG. Как мне настроить @SpringBootTest только один раз? - PullRequest
2 голосов
/ 10 января 2020

У меня есть много файлов модульных тестов, как я могу избежать запуска нескольких классов модульных тестов, которые Spring будет запускать несколько раз (запустить Spring один раз, запустить несколько тестовых файлов)

Я использую testng для модульного тестирования SpringBoot Я создал BaseTest для установки необходимой конфигурации. Каждый тестовый класс расширяет этот BaseTest.

BaseTest ::

package comTest;

import ...;

@SpringBootTest(classes = Application.class)
@WebAppConfiguration
@Rollback(value = false)
@TestExecutionListeners(listeners = MockitoTestExecutionListener.class)
public class BaseTest extends AbstractTransactionalTestNGSpringContextTests {
}

UT class ::

package comTest.testDemo;

import ...;

public class TotalTest extends BaseTest {
     @Test
     ....
}
====================================================
package comTest.testDemo;

import ...;

public class ControllerTest extends BaseTest {
     @Test
     ....
}

testng. xml ::

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="demo">
        <classes>
            <class name="comTest.testDemo.ControllerTest">
            </class>
            <class name="comTest.testDemo.TotalTest">
            </class>
        </classes>
    </test>
</suite>

когда я запускаю этот testng.xml, консоль возвращает следующие результаты: *

enter image description here enter image description here

У меня есть два тестовых класса, которые наследуют BaseTeat, так что пружина запускается дважды, что значительно замедляет время выполнения теста. Необходимо расширить BaseTest в моих модульных тестах.

Как мне добиться, чтобы все тестовые классы можно было запустить только один раз, загрузив пружину.

...