java - Elasticsearch (Java) - 集成测试

标签 java elasticsearch integration-testing

我使用 Java 8、Elasticsearch 高级客户端 6.1.1 和 Maven,想要编写一些集成测试。 这是我用于测试的 java 类:

@ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.SUITE, numDataNodes=1)
public class ElasticSearchServiceITest extends ESIntegTestCase {
}

我添加了依赖项:

<dependency>
            <groupId>org.elasticsearch.test</groupId>
            <artifactId>framework</artifactId>
            <version>6.1.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-test-framework</artifactId>
            <version>7.1.0</version>
            <scope>test</scope>
        </dependency>

当我尝试运行测试时 - 我看到错误:

java.lang.RuntimeException:在测试类路径中发现 jar hell

    at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:92)
    at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:190)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:592)
Caused by: java.lang.IllegalStateException: jar hell!
Exception in thread "Thread-6" java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.test.ESTestCase
    at java.lang.Thread.run(Thread.java:748)
    Suppressed: java.lang.IllegalStateException: No context information for thread: Thread[id=29, name=Thread-6, state=RUNNABLE, group=TGRP-ElasticSearchServiceITest]. Is this thread running under a class com.carrotsearch.randomizedtesting.RandomizedRunner runner context? Add @RunWith(class com.carrotsearch.randomizedtesting.RandomizedRunner.class) to your test class. Make sure your code accesses random contexts within @BeforeClass and @AfterClass boundary (for example, static test class initializers are not permitted to access random contexts).
        at com.carrotsearch.randomizedtesting.RandomizedContext.context(RandomizedContext.java:248)
        at com.carrotsearch.randomizedtesting.RandomizedContext.current(RandomizedContext.java:134)
        at com.carrotsearch.randomizedtesting.RandomizedRunner.augmentStackTrace(RandomizedRunner.java:1848)
        at com.carrotsearch.randomizedtesting.RunnerThreadGroup.uncaughtException(RunnerThreadGroup.java:20)
        at java.lang.Thread.dispatchUncaughtException(Thread.java:1959)

我做错了什么?我没有添加任何功能,但收到错误。

最佳答案

我遇到了同样的问题,并通过设置 tests.security.manager=false 运行测试来解决它。您还可以更新您的 java 策略文件(请参阅 https://github.com/elastic/elasticsearch/issues/22689 )

关于java - Elasticsearch (Java) - 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49258688/

相关文章:

elasticsearch - Titan 1.0混合索引不适用于警告-查询需要遍历所有顶点

java - 如何避免在 Maven 中安装或部署仅测试模块

ruby-on-rails - rails/RSpec : reset_session not changing Set-Cookie HTTP header value during integration tests

java - IntelliJ IDEA 使用 Lombok 编译错误

java - 修复类之间的方法冲突?

elasticsearch - elasticsearch 5.x:如何使嵌套匹配查询搜索

sorting - Elasticsearch 排序查询

javascript - 在 cypress 中加载时继续向下滚动

java - 在哪里可以找到适用于 windows x86/32 位的 java 的 jdk 13 的最新版本

java - 我怎样才能用Java编写这个Python代码(解析一串整数,使用分隔符)?