【问题标题】:scalatest not working in intellij 13.1scalatest 在 intellij 13.1 中不起作用
【发布时间】:2016-11-24 07:32:16
【问题描述】:

我似乎无法让 Intellij 13.1 运行我的测试。我创建了一个简单的项目来尝试隔离问题,但它在那里也不起作用。这是我的设置:

  • Intellij 13.1 以 JDK 1.6 为目标(需要使用 Java 库)
  • SBT 支持的 scala 2.10 项目
  • 最新的 scalatest(libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.1" % "test")

这是sut:

object Calc {
  def add(a: Int, b: Int) = {
    a + b
  }
}

这是测试:

import org.scalatest.FunSuite

class Calc$Test extends FunSuite {
  test("two number should add") {
    assert(Calc.add(2, 5) == 7)
  }
}

这是我得到的错误:

错误:scalac: 编译时:/Users/test-user/Development/temp/sample/src/test/scala/Calc$Test.scala 阶段期间:打字机 库版本:2.10.4 版 编译器版本:版本 2.10.4 重构参数:-nobootcp -javabootclasspath : -classpath /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/deploy.jar:/System/Library/Java/JavaVirtualMachines /1.6.0.jdk/Contents/Home/lib/dt.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/javaws.jar:/System/Library/Java/JavaVirtualMachines /1.6.0.jdk/Contents/Home/lib/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/jconsole.jar:/System/Library/Java/JavaVirtualMachines /1.6.0.jdk/Contents/Home/lib/management-agent.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/plugin.jar:/System/Library/Java /JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/sa-jdi.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar:/System/Library/Java /JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java /JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/apple_provider.jar:/System/Library/Java /JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/dnsns.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/localedata.jar:/System /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunjce_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunpkcs11。 jar:/Users/test-user/Development/temp/sample/target/scala-2.10/test-classes:/Users/test-user/Development/temp/sample/target/scala-2.10/classes:/Users/test -user/.sbt/boot/scala-2.10.4/lib/scala-library.jar:/Users/test-user/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library- 2.11.2.jar:/Users/test-user/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.11.2.jar:/Users/test-user/.ivy2/缓存/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.2.jar:/Users/test-user/.ivy2/ca che/org.scalatest/scalatest_2.11/bundles/scalatest_2.11-2.2.1.jar:/Users/test-user/.sbt/boot/scala-2.10.4/lib/scala-reflect.jar:/Users /test-user/.sbt/boot/scala-2.10.4/lib/scala-compiler.jar 最后一棵树打字:应用(方法==) 符号:方法 == 在类 Int (flags: ) 符号定义:def ==(x: Int): Boolean tpe:布尔值 符号所有者:方法 == -> 类 Int -> 包 scala 上下文所有者:值 -> 类 Calc$Test -> 包 == 封闭模板或块 == Template( // val : 在类 Calc$Test "FunSuite" // 父级 ValDef( 私人的 “_” ) // 2 个语句 DefDef( // def (): Calc$Test 类中的 Calc$Test “” [] 列表(无) // tree.tpe=Calc$Test Block( // tree.tpe=Unit Apply( // def (): org.scalatest.FunSuite in class FunSuite, tree.tpe=org.scalatest.FunSuite Calc$Test.super."" // def (): org.scalatest.FunSuite in class FunSuite, tree.tpe=()org.scalatest.FunSuite 零 ) () ) ) 申请( 申请( “测试” “两个数字应该加” ) 申请( “断言” Apply( // def ==(x: Int): Int 类中的布尔值,tree.tpe=Boolean Calc.add(2, 5)."$eq$eq" // def ==(x: Int): Int 类中的布尔值,tree.tpe=(x: Int)Boolean 7 ) ) ) ) == 树的扩展类型 == TypeRef(TypeSymbol(final abstract class Boolean extends AnyVal)) 编​​译期间未捕获的异常: scala.MatchError

知道问题可能是什么吗?我认为这是由一个简单的配置问题引起的,因为代码尽可能简单。

【问题讨论】:

    标签: scala intellij-idea scalatest intellij-13


    【解决方案1】:

    您显然遇到的一个问题是,您要求的是为 Scala 2.11 编译的 scalatest 版本,但您说您使用的是 Scala 2.10。您需要在 build.sbt 中使用“scalatest_2.10”而不是“scalatest_2.11”。使用

    libraryDependencies += "org.scalatest" % "scalatest_2.10" % "2.2.1" % "test"
    

    甚至可能

    libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.1" % "test"
    

    自动获取您的 Scala 版本(注意更改为双百分比:%%。)

    【讨论】:

    • 嗯,这很容易 :) 我以为我读到我可以使用 scala 2.10 进行最大规模 - 我想我错了。
    • 我想知道您是否仍然对您使用的特定 API 的版本与编译特定包的 Scala 版本之间的差异感到有些困惑。在上述依赖项的情况下,您请求的是 scalatest API 的 2.2.1 版本,这在 Scala 2.10 和 Scala 2.11 的包中都可用。对于 scalatest,编译器版本被烘焙到工件名称中,但并不总是这样做。查看this listing 可能会有所帮助。
    【解决方案2】:

    由于您的项目支持 2.10,因此对 scalatest 也使用相同的版本,

    scalaVersion := "2.10.5" // don't need to mention scalatest_2.10, will be reflected automatically
    
    libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" // works with 2.2.1 or 3.0.0
    
    libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % "test"
    

    或者使用maven,

    <dependency>
        <groupId>org.scalactic</groupId>
        <artifactId>scalactic_2.10</artifactId>
        <version>3.0.0</version>
    </dependency>
    
    <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_2.10</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>
    

    参考这里http://www.scalatest.org/install

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 2014-06-07
      相关资源
      最近更新 更多