簡體   English   中英

將嵌入式 Cassandra 與突變測試結合使用時出現 NoSuchMethodError

[英]NoSuchMethodError when using Embedded Cassandra with Mutation Tests

最近在將一些新的單元測試合並到我的工作分支時,我開始看到這個錯誤:

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 test -DskipMutation來驗證單元測試是否通過編寫,因此當將嵌入式 Cassandra 與突變測試結合使用時,這似乎是一個問題,但我對這兩種技術都不太熟悉。

以前有沒有人遇到過這個問題,你能提供一些解決這個問題的指針嗎(而不是簡單地禁用突變測試)?

此錯誤的最可能原因是您的 Guava 版本低於 18.0,其中添加了MoreExecutors.newDirectExecutor 方法- Cassandra 需要它。 在您的項目上運行mvn dependency:tree並檢查您項目中的 Guava 版本。 如果任何依賴項依賴於舊版本的 Guava,請嘗試從該依賴項中排除 Guava(盡管這可能會破壞您的代碼 - 在這種情況下,請嘗試查找不使用舊版本 Guava 的依賴項)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM