为什么赢了';我的scalatest测试是否编译?(scala.MatchError)

为什么赢了';我的scalatest测试是否编译?(scala.MatchError),scala,sbt,scalatest,Scala,Sbt,Scalatest,我的项目中有所有代码: package fileSearcher import org.scalatest.FlatSpec class FilterCheckerTests extends org.scalatest.FlatSpec { "Foo" should "not do terrible things" in { assert(1 == 1) } } sbt测试因scala.MatchError而崩溃(完整详细信息如下) 我做错了什么 [info]

我的项目中有所有代码:

package fileSearcher

import org.scalatest.FlatSpec

class FilterCheckerTests extends org.scalatest.FlatSpec {
  "Foo" should
  "not do terrible things" in {

    assert(1 == 1)
  }  
}

sbt测试因scala.MatchError而崩溃(完整详细信息如下)

我做错了什么

[info] Compiling 1 Scala source to C:\scala\course\FileSearcher\target\scala-2.1
0\test-classes...
[error]
[error]      while compiling: C:\scala\course\FileSearcher\src\test\scala\fileSe
archer\FilterCheckerTests.scala
[error]         during phase: typer
[error]      library version: version 2.10.4
[error]     compiler version: version 2.10.4
[error]   reconstructed args: -classpath C:\scala\course\FileSearcher\target\sca
la-2.10\test-classes;C:\scala\course\FileSearcher\target\scala-2.10\classes;C:\U
sers\Max\.ivy2\cache\org.scalatest\scalatest_2.11\bundles\scalatest_2.11-2.2.4.j
ar;C:\Users\Max\.ivy2\cache\org.scala-lang\scala-reflect\jars\scala-reflect-2.11
.2.jar;C:\Users\Max\.ivy2\cache\org.scala-lang.modules\scala-xml_2.11\bundles\sc
ala-xml_2.11-1.0.2.jar;C:\Users\Max\.ivy2\cache\com.novocode\junit-interface\jar
s\junit-interface-0.11.jar;C:\Users\Max\.ivy2\cache\junit\junit\jars\junit-4.11.
jar;C:\Users\Max\.ivy2\cache\org.hamcrest\hamcrest-core\jars\hamcrest-core-1.3.j
ar;C:\Users\Max\.ivy2\cache\org.scala-sbt\test-interface\jars\test-interface-1.0
.jar -bootclasspath C:\Program Files\Java\jdk1.8.0_20\jre\lib\resources.jar;C:\P
rogram Files\Java\jdk1.8.0_20\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_20\j
re\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\jsse.jar;C:\Prog
ram Files\Java\jdk1.8.0_20\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_20\jre
\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_20\jre\lib\jfr.jar;C:\Program F
iles\Java\jdk1.8.0_20\jre\classes;C:\Users\Max\.ivy2\cache\org.scala-lang\scala-
library\jars\scala-library-2.10.4.jar
[error]
[error]   last tree to typer: Literal(Constant(true))
[error]               symbol: null
[error]    symbol definition: null
[error]                  tpe: Boolean(true)
[error]        symbol owners:
[error]       context owners: value <local FilterCheckerTests> -> class FilterCh
eckerTests -> package fileSearcher
[error]
[error] == Enclosing template or block ==
[error]
[error] Template( // val <local FilterCheckerTests>: <notype> in class FilterChe
ckerTests
[error]   "org.scalatest.FlatSpec" // parents
[error]   ValDef(
[error]     private
[error]     "_"
[error]     <tpt>
[error]     <empty>
[error]   )
[error]   // 2 statements
[error]   DefDef( // def <init>(): fileSearcher.FilterCheckerTests in class Filt
erCheckerTests
[error]     <method>
[error]     "<init>"
[error]     []
[error]     List(Nil)
[error]     <tpt> // tree.tpe=fileSearcher.FilterCheckerTests
[error]     Block( // tree.tpe=Unit
[error]       Apply( // def <init>(): org.scalatest.FlatSpec in class FlatSpec,
tree.tpe=org.scalatest.FlatSpec
[error]         FilterCheckerTests.super."<init>" // def <init>(): org.scalatest
.FlatSpec in class FlatSpec, tree.tpe=()org.scalatest.FlatSpec
[error]         Nil
[error]       )
[error]       ()
[error]     )
[error]   )
[error]   Apply(
[error]     "Foo".should("not do terrible things")."in"
[error]     Apply(
[error]       "assert"
[error]       Apply( // def ==(x: Int): Boolean in class Int, tree.tpe=Boolean(t
rue)
[error]         1."$eq$eq" // def ==(x: Int): Boolean in class Int, tree.tpe=(x:
 Int)Boolean
[error]         1
[error]       )
[error]     )
[error]   )
[error] )
[error]
[error] == Expanded type of tree ==
[error]
[error] ConstantType(value = Constant(true))
[error]
[error] uncaught exception during compilation: scala.MatchError
[trace] Stack trace suppressed: run last test:compile for the full output.
[error] (test:compile) scala.MatchError: false (of class scala.reflect.internal.
Trees$Literal)
[error] Total time: 0 s, completed Jun 20, 2015 11:07:15 AM
1. Waiting for source changes... (press enter to interrupt)
[info]将1个Scala源代码编译为C:\Scala\course\filesearch\target\Scala-2.1
0\测试类。。。
[错误]
编译时出现[错误]:C:\scala\course\filesearch\src\test\scala\fileSe
archer\FilterCheckerTests.scala
阶段期间[错误]:打字机
[错误]库版本:版本2.10.4
[错误]编译器版本:版本2.10.4
[错误]重构的参数:-classpath C:\scala\course\filesearch\target\sca
la-2.10 \测试类;C:\scala\course\filesearch\target\scala-2.10\classes;C:\U
sers\Max\.ivy2\cache\org.scalatest\scalatest_2.11\bundles\scalatest_2.11-2.2.4.j
应收账;C:\Users\Max\.ivy2\cache\org.scala lang\scala reflect\jars\scala-reflect-2.11
.2.jar;C:\Users\Max\.ivy2\cache\org.scala-lang.modules\scala-xml\u 2.11\bundles\sc
ala-xml_2.11-1.0.2.jar;C:\Users\Max\.ivy2\cache\com.novocode\junit interface\jar
s\junit-interface-0.11.jar;C:\Users\Max\.ivy2\cache\junit\junit\jars\junit-4.11。
罐子C:\Users\Max\.ivy2\cache\org.hamcrest\hamcrest-core\jars\hamcrest-core-1.3.j
应收账;C:\Users\Max\.ivy2\cache\org.scala sbt\test interface\jars\test-interface-1.0
.jar-bootclasspath C:\Program Files\Java\jdk1.8.0\U 20\jre\lib\resources.jar;C:\P
程序文件\Java\jdk1.8.0\u 20\jre\lib\rt.jar;C:\ProgramFiles\Java\jdk1.8.0\U 20\j
re\lib\sunrsasign.jar;C:\ProgramFiles\Java\jdk1.8.0\U 20\jre\lib\jsse.jar;C:\Prog
ram文件\Java\jdk1.8.0\u 20\jre\lib\jce.jar;C:\ProgramFiles\Java\jdk1.8.0\U 20\jre
\lib\charsets.jar;C:\ProgramFiles\Java\jdk1.8.0\U 20\jre\lib\jfr.jar;C:\程序F
iles\Java\jdk1.8.0\u 20\jre\classes;C:\Users\Max\.ivy2\cache\org.scala lang\scala-
library\jars\scala-library-2.10.4.jar
[错误]
[错误]键入器的最后一个树:文本(常量(真))
[错误]符号:空
[错误]符号定义:null
[错误]tpe:布尔值(真)
[错误]符号所有者:
[错误]上下文所有者:值->类过滤器
eckerTests->package filesearch
[错误]
[错误]==封闭模板或块==
[错误]
[错误]模板(//val:在类FilterChe中
克尔特斯
[错误]“org.scalatest.FlatSpec”//parents
[错误]ValDef(
[错误]私人
[错误]“\”
[错误]
[错误]
[错误])
[错误]//2条语句
[错误]DefDef(//def():类Filt中的filesearch.FilterCheckerTests
ERCHECKER测试
[错误]
[错误]“”
[错误][]
[错误]列表(无)
[错误]//tree.tpe=filesearch.FilterCheckerTests
[错误]块(//tree.tpe=Unit
[错误]在FlatSpec类中应用(//def():org.scalatest.FlatSpec,
tree.tpe=org.scalatest.FlatSpec
[错误]FilterCheckerTests.super。“//def():org.scalatest
FlatSpec类中的.FlatSpec,tree.tpe=()org.scalatest.FlatSpec
[错误]无
[错误])
[错误]()
[错误])
[错误])
[错误]应用(
[错误]“Foo”。应该(“不做可怕的事情”)。“in”
[错误]应用(
[错误]“断言”
[error]Apply(//def==(x:Int):类Int中的Boolean,tree.tpe=Boolean(t
街)
[错误]1。“$eq$eq”//def==(x:Int):类Int中的布尔值,tree.tpe=(x:
Int)布尔
[错误]1
[错误])
[错误])
[错误])
[错误])
[错误]
[错误]==树的扩展类型==
[错误]
[错误]常量类型(值=常量(真))
[错误]
[错误]编译期间未捕获异常:scala.MatchError
[trace]堆栈跟踪被抑制:运行上一个测试:编译完整输出。
[错误](测试:编译)scala.MatchError:false(属于类scala.reflect.internal)。
树($Literal)
[错误]总时间:0秒,已完成2015年6月20日上午11:07:15
1.正在等待源更改。。。(按enter键中断)

通过查看由编译器打印的类路径可以看出,您将Scala 2.10与2.11的库混合在一起。考虑到Scala的主要版本是二进制不兼容的,这永远不会起作用


这可以通过
scalaVersion:=“2.11.5”
或通过将所有依赖项设置为使用2.10版本来解决,这可以通过
libraryDependencies+=“group”%%“libName”%%“version”
实现,其中
%%
表示sbt自动使用正确的库版本。

适用于任何出现类似错误的人(如我所做的那样)使用Maven而不是sbt运行Scala2.10,解决方案只是将ScalaTest网站中建议的Maven依赖项从

<dependency>
  <groupId>org.scalatest</groupId>
  <artifactId>scalatest_2.11</artifactId>
  <version>3.0.0</version>
  <scope>test</scope>
</dependency>

org.scalatest
比例测试2.11
3.0.0
测试


org.scalatest
比例测试2.10
3.0.0
测试

编译器错误。这不应该发生,但它无论如何也无法工作,因为您将Scala 2.10与2.11的库混合使用。@sschaef您有什么建议吗?您可以展示sbt依赖项吗?是的,可以配置
scalaVersion:=“2.11.5”
或配置所有依赖项以使用2.10版本。@sschaef
scalaVersion:=“2.11.5”
修复了它!谢谢你能把这个作为答案吗?
<dependency>
  <groupId>org.scalatest</groupId>
  <artifactId>scalatest_2.10</artifactId>
  <version>3.0.0</version>
  <scope>test</scope>
</dependency>