2017-09-16 102 views
0

我試圖使用ESTestCase類從包org.elasticsearch.test.ESTestCase 我下面這個鏈接 - > https://www.elastic.co/guide/en/elasticsearch/reference/current/using-elasticsearch-test-classes.html 我使用SBT項目這裏是庫的依賴是構建。 SBT文件對象測試是不是包的成員org.elasticsearch

"org.elasticsearch" % "elasticsearch" % "5.6.0", 
"org.elasticsearch.client" % "transport" % "5.6.0", 
       "org.apache.lucene" % "lucene-expressions" % "6.6.0", 
       "org.apache.logging.log4j" % "log4j-core" % "2.9.0", 
       "org.apache.lucene" % "lucene-test-framework" % "6.6.0" % "test", 
       "org.elasticsearch.test" % "framework" % "5.6.0" % "test", 

當我嘗試導入這兩條線

import org.elasticsearch.test.ESTestCase 
import org.elasticsearch.transport.MockTransportClient 

日食沒有顯示任何編譯時錯誤,但得到了以下0錯誤

[

error] /myproject/app/CampaignController.scala:44: object test is not a member of package org.elasticsearch 
[error] import org.elasticsearch.test.ESTestCase 
[error]      ^
[error] /myproject/app/CampaignController.scala:45: object MockTransportClient is not a member of package org.elasticsearch.transport 
[error] import org.elasticsearch.transport.MockTransportClient 
[error]  ^

我使用ElasticSearch 5.6.0,請幫忙是什麼原因造成的問題

回答

1

的問題是在% "test"依賴關係。 如果依賴關係以% "test"結尾,它將僅針對您的測試進行編譯。

所以通常假設你會在你的測試模塊(src/test/scala或類似的東西)中使用org.elasticsearch.test.ESTestCase和其他測試東西。

可能您正在將彈性搜索測試依賴項導入應用程序(src/main ...),這就是爲什麼您會收到錯誤。

如果您將它們導入到測試模塊(src/test/scala)中,它將起作用。

但是,如果您確實需要將其導入到您的應用程序代碼中,那麼只需從 中刪除% "test"從依賴關係。

... 
"org.apache.lucene" % "lucene-test-framework" % "6.6.0", 
"org.elasticsearch.test" % "framework" % "5.6.0" 
... 

這裏是一個SBT DOC這也解釋了它: http://www.scala-sbt.org/0.13/docs/Library-Dependencies.html(搜索 「每配置依賴關係」)

相關問題