Java elasticsearch 6 ESIntegTestCase“;已设置代码库属性“0”;
我正在尝试从2.3.4升级到ES 6.2 以前,我们使用NodeBuilder并运行本地ES节点来测试代码。如果可能的话,我宁愿把它换成ESINTEGTEST用例 但是,当我尝试运行集成测试时,会出现以下错误:Java elasticsearch 6 ESIntegTestCase“;已设置代码库属性“0”;,java,elasticsearch,Java,elasticsearch,我正在尝试从2.3.4升级到ES 6.2 以前,我们使用NodeBuilder并运行本地ES节点来测试代码。如果可能的话,我宁愿把它换成ESINTEGTEST用例 但是,当我尝试运行集成测试时,会出现以下错误: 位于org.elasticsearch.bootstrap.BootstrapForTesting.(BootstrapForTesting.java:164) 位于org.elasticsearch.test.ESTestCase(ESTestCase.java:190) 位于jav
位于org.elasticsearch.bootstrap.BootstrapForTesting.(BootstrapForTesting.java:164)
位于org.elasticsearch.test.ESTestCase(ESTestCase.java:190)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:348)
位于com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:592)
原因:java.lang.IllegalStateException:codebase属性已设置:codebase.metrics-core->file:/Users/me/.m2/repository/io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.jar,无法设置为file:/Users/me/.m2/repository/com/yammer/metrics/core/2.2.0/metrics-core.jar
位于org.elasticsearch.bootstrap.Security.readPolicy(Security.java:236)
位于org.elasticsearch.bootstrap.BootstrapForTesting.(BootstrapForTesting.java:139)
... 4更多
这意味着什么?我如何修复它
我的测试类被注释为:@RunWith(com.carrotsearch.randomizedtesting.RandomizedRunner.class)
并扩展ESIntegTestCase
,如果这有帮助的话
谢谢大家的帮助 根据这个问题:除非您正在测试插件或类似的东西,否则ESIntegTestCase也不应该真正被使用(请参阅此处的回复帖子:)
请参见此处了解更多信息:
我现在发现的与elasticsearch集成测试的最佳方法是在讨论帖子中提到的:使用testcontainers elasticsearch()
您需要在运行测试的机器上安装docker,但它会自动拉取所需的docker映像,启动容器并在最后再次将其拆下。根据此问题:除非您正在测试插件或类似的东西,否则也不应再真正使用ESIntegTestCase(请参阅此处的回复帖子:)
请参见此处了解更多信息:
我现在发现的与elasticsearch集成测试的最佳方法是在讨论帖子中提到的:使用testcontainers elasticsearch()
您需要在运行测试的机器上安装docker,但它会自动拉取所需的docker映像,启动容器并在最后再次将其拆下。如果开发插件仍然需要嵌入式ES,那么设置系统属性
-Dtests.gradle=false
可能可以解决此问题
由于BootstrapForTesting.java L175包含:
if (System.getProperty("tests.gradle") == null) {
addClassCodebase(codebases, "plugin-classloader", "org.elasticsearch.plugins.ExtendedPluginsClassLoader");
addClassCodebase(codebases, "elasticsearch-secure-sm", "org.elasticsearch.secure_sm.SecureSM");
}
如果开发插件仍然需要嵌入式ES,那么设置系统属性
-Dtests.gradle=false可以解决这个问题
由于BootstrapForTesting.java L175包含:
if (System.getProperty("tests.gradle") == null) {
addClassCodebase(codebases, "plugin-classloader", "org.elasticsearch.plugins.ExtendedPluginsClassLoader");
addClassCodebase(codebases, "elasticsearch-secure-sm", "org.elasticsearch.secure_sm.SecureSM");
}