当前位置: 首页 > 知识库问答 >
问题:

将嵌入式Cassandra与突变测试结合使用时出现NoSuchMethodError

孟鸿德
2023-03-14

最近,在将一些新的单元测试合并到我的工作分支中时,我开始看到以下错误:

Exception (java.lang.NoSuchMethodError) encountered during startup: com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService()Lcom/google/common/util/concurrent/ListeningExecutorService;
java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.newDirectExecutorService()Lcom/google/common/util/concurrent/ListeningExecutorService;
    at org.apache.cassandra.index.SecondaryIndexManager.<clinit>(SecondaryIndexManager.java:125)
    at org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:405)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:623)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:597)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:588)
    at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:417)
    at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:324)
    at org.apache.cassandra.db.Keyspace.open(Keyspace.java:129)
    at org.apache.cassandra.db.Keyspace.open(Keyspace.java:106)
    at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:935)
    at org.apache.cassandra.service.StartupChecks$10.execute(StartupChecks.java:422)
    at org.apache.cassandra.service.StartupChecks.verify(StartupChecks.java:125)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:200)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:602)
    at org.cassandraunit.utils.EmbeddedCassandraServerHelper.lambda$startEmbeddedCassandra$1(EmbeddedCassandraServerHelper.java:150)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

下面是令人反感的测试类:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = { MyApplication.class })
@TestExecutionListeners(listeners = { CassandraUnitDependencyInjectionTestExecutionListener.class, DependencyInjectionTestExecutionListener.class })
@EmbeddedCassandra(timeout = 100000)
@CassandraDataSet("indexer.cql")
@ActiveProfiles("test")
public class MyDaoTest {

    @Autowired
    MyDao myDao;


    @Test ...
}

通过运行mvn测试-DskipMutation,我能够验证单元测试是否通过了编写的测试,因此在将嵌入式Cassandra与突变测试结合使用时,这似乎是一个问题,但我对这两种技术都不是很熟悉。

以前是否有人遇到过这个问题,您能否提供一些解决这个问题的建议(而不是简单地禁用突变测试)?

共有1个答案

寿和通
2023-03-14

此错误最可能的原因是您的Guava版本低于18.0,其中添加了MoreExecutors.newDirectExecitor方法——这是Cassandra所必需的。在您的项目上运行mvn依赖项:tree并检查项目中的Guava版本。如果任何依赖项都依赖于旧版本的Guava,请尝试将Guava从该依赖项中排除(尽管这可能会破坏您的代码——在这种情况下,请尝试找到不使用旧版本的Guava的依赖项)。

 类似资料:
  • 我需要启动一个嵌入式cassandra实例,通过单元测试在cassandra键空间上执行一些操作。编程语言是Java。启动嵌入式cassandra有哪些选项? 我使用了mojo maven插件,但是在使用以下命令启动实例之后,我没有看到cassandra实例在localhost上的默认端口9042启动。插件:http://www.mojohaus.org/cassandra-maven-plugi

  • 问题内容: 我已导入以下内容,但在使用时仍然出现错误 注意:我在Eclipse中使用Selenium WebDriver。 示例代码如下。 我收到一条错误消息,指出 指向线 你们其中一个能让我知道这里有什么不对吗? 问题答案: 您可以尝试使用此方法,这里已解决了类似的问题#sendKeys问题 或简单地

  • 我用JUnit 4和Selenium Webdriver创建了我的功能测试,它运行正常 现在我想用JMeter进行性能测试。 我在JMeter的库中复制了,然后将测试从Eclipse导出到. jar文件。 这是我的硒测试

  • 问题内容: 我想在 独立应用程序* 中将 hibernate 与 嵌入式derby 一起使用,并且我有一些问题: * 我需要什么jar? 必要的hibernate配置是什么? 还有其他必要的配置吗? 查询/条件是否有任何问题/限制? 如果您还可以建议我一些适合这种方法的好教程,那将是可取的,谢谢。 问题答案: 我将Apache Derby与Hibernate一起用于测试项目的一个模型类(它们的 e

  • 我正在尝试使用CQL将我的域模型放入卡桑德拉中。假设我有USER_FAVOURITES张桌子。每个收藏夹都有 ID 作为主键。我想按顺序存储最多 10 个多个字段的记录的列表,field_name、field_location等。 对这样的表进行建模是个好主意吗? 并且对象将由匹配索引的列表项构成(例如 我总是在一起查询收藏夹。我可能想添加和项目到某个位置,开始,结束或中间。 这是一个好的做法吗?

  • 我们有一个apache beam数据流作业,该作业从大查询中读取数据,并在使用Datastax驱动程序写入Cassandra之前将其转换为POJO。我最近在表中添加了一个新的blob列,并在POJO中添加了一个ByteBuffer字段。 我是如何创建ByteBuffer的 这是管道片段公共空执行管道()抛出异常{ 。。。。writeDataToCassandra(installSkuData);