文档说写@SpringbootTest并不意味着我们加载了所有配置
我们应该能够一次测试一个应用程序片段
我遇到一种情况,其中一个模块与弹性搜索对话,然后我们在集成测试中提高EmbeddedElasticsearchServer
但是我很难弄清楚如何定义@Configuration类,如何在测试中加载它们以及如何确保Elasticsearch服务器在所有测试中都旋转一次
答案 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 }
}