弹簧启动测试和嵌入式弹性服务器

时间:2019-04-11 18:05:28

标签: spring-boot

文档说写@SpringbootTest并不意味着我们加载了所有配置

我们应该能够一次测试一个应用程序片段

我遇到一种情况,其中一个模块与弹性搜索对话,然后我们在集成测试中提高EmbeddedElasticsearchServer

但是我很难弄清楚如何定义@Configuration类,如何在测试中加载它们以及如何确保Elasticsearch服务器在所有测试中都旋转一次

2 个答案:

答案 0 :(得分:1)

我们应该能够一次测试一个应用程序片段

这可以通过在@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 :(得分:1)

我不确定@SpringBootTest。但是您可以将以下模板用于与Embeddedserver集成的Elasticsearch Integration

v7.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 }
}