我使用的是Elasticsearch版本2.4.4。 然后我创建了源自ESIntegTestCase的测试用例,类似于:
public class ELSTest extends ESIntegTestCase {
@Override
protected Settings nodeSettings ( int nodeOrdinal ) {
return Settings.builder().put( super.nodeSettings( nodeOrdinal ) )
.put( super.nodeSettings( nodeOrdinal ) )
.put( IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1 )
.put( IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 1 )
.put( Node.HTTP_ENABLED, true )
.build();
}
@BeforeClass
public void setup () throws Exception {
createIndex( "idx" ); // line 57
ensureGreen( "idx" );
}
}
解决了“jar hell”问题并阅读了关于 ESIntegTestCase 的一堆页面后,我得到了新的。
java.lang.NullPointerException
at org.elasticsearch.test.ESIntegTestCase.client(ESIntegTestCase.java:657)
at org.elasticsearch.test.ESIntegTestCase.client(ESIntegTestCase.java:650)
at org.elasticsearch.test.ESIntegTestCase.prepareCreate(ESIntegTestCase.java:763)
at com.company.ELSTest.setup(ELSTest.java:57)
它可能是什么原因?我指的是ESIntegTestCase类在行中抛出NPE的那个:
Client client = cluster().client();
似乎群集未初始化。什么是正确的非常基本的类设置,在测试中启动elasticsearch?
答案 0 :(得分:1)
回答自己: - )
文档位于:integration tests
需要以下扩展:
重要的限制是ESIntegTestCase类仅适用于JUnit。没有简单的方法让它与... TestNG - 解释如下。
使用其他参数启动JUnit:
-Dtests.jarhell.check =假 避免jar地狱
-Dtests.security.manager =假 避免java.security.AccessControlException:访问被拒绝
类声明如下:
@RunWith(com.carrotsearch.randomizedtesting.RandomizedRunner.class) 公共类ELSTest扩展了ESIntegTestCase {
@Before
public void setup () throws Exception {
beforeClass(); // against NullPointerException in ESIntegTestCase
createIndex( "idx" );
ensureGreen( "idx" );
// ...
}
}
备注: