В документации сказано, что написание @SpringbootTest не означает, что мы загружаем всю конфигурацию

Мы должны быть в состоянии протестировать часть приложения одновременно

У меня есть случай, когда один модуль говорит с упругим поиском, и мы ускоряем EmbeddedElasticsearchServer в интеграционных тестах

Однако мне трудно разобраться, как определить классы @Configuration, как загрузить их в тесте и как убедиться, что серверasticsearch запускается один раз для всех тестов.

1
Kalpesh Soni 11 Апр 2019 в 21:05

2 ответа

Лучший ответ

Я не уверен насчет @SpringBootTest. Но вы можете использовать приведенный ниже шаблон для упругости поиска и интеграции со встроенным сервером.

Версия 7.0.0

@ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.SUITE, numDataNodes = 1, numClientNodes = 0, transportClientRatio = 0, supportsDedicatedMasters = false)
@RunWith(com.carrotsearch.randomizedtesting.RandomizedRunner.class)
public class TestWatsonBulkIT extends ESIntegTestCase {
  @Override
protected boolean addMockHttpTransport() {
    return false;
}
    @Override
protected Settings nodeSettings(int nodeOrdinal) {
    Settings.Builder builder = Settings.builder()
            .put(super.nodeSettings(nodeOrdinal))
            .put(NetworkModule.TRANSPORT_TYPE_KEY, Netty4Plugin.NETTY_HTTP_TRANSPORT_NAME)
            .put(NetworkModule.HTTP_TYPE_KEY, Netty4Plugin.NETTY_HTTP_TRANSPORT_NAME)
            .put(HttpTransportSettings.SETTING_HTTP_PORT.getKey(), 9200)
            .put(HttpTransportSettings.SETTING_HTTP_HOST.getKey(),"127.0.0.1");
    Settings settings = builder.build();
    return settings;
}
@Before
public void setUp() throws Exception {
    beforeClass();
    super.setUp();
}
@Test
public void test_1(){ // your integration test code here }
}
1
JoRoot 18 Апр 2019 в 01:05

Мы должны быть в состоянии протестировать часть приложения одновременно

Это возможно путем предоставления классов в аннотации @SpringBootTest. Я обычно иду на эту опцию, чтобы не загружать все. Скажем,

Контроллер: SampleController -> ConsumerService (с автоматической связью)

Контрольная работа

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {ConsumerService.class, SampleController.class})
public class TestSample {

    @Autowired
    SampleController sam;

    @Test
    public void testSam() {
        sam.sample();
    }

}

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

Если это не то, что вы ищете, пожалуйста, добавьте несколько примеров кодов.

1
Pasupathi Rajamanickam 11 Апр 2019 в 19:27