我对 Scala 和 Intellij 相当陌生,对 ScalaTest 也是全新的。我已经使用最新的 Scala 插件设置了 Intellij 14 和 Scala 2.11.4,一切正常。然后我尝试介绍ScalaTest,但我很困惑。我从 scalatest.org
下载了最新版本的 ScalaTest (scalatest_2.11-2.2.1.jar
)。我进入项目结构并选择“模块”,单击绿色加号并添加 scalatest_2.11-2.2.1.jar
。一切都很顺利,我可以在项目的外部库中看到 scalatest jar。当我创建第一个测试时,它导入了 org.scalatest.Funsuite 并扩展了 FunSuite 类,一切都很好。然后我尝试了一个从互联网上复制的非常简单的测试。
import org.scalatest.FunSuite
class MyTest extends FunSuite {
test("this is a test") {
assert(true)
}
}
我收到 2 个错误。它无法解析具有该签名的“assert”引用,并且对于“test”方法,它表示未指定的值参数Seq[Tag]: () => BoxedUnit
。
我可以看到“assert”和“test”的其他方法签名,但我无法使用最基本的方法签名。
感谢您的帮助
最佳答案
虽然我没有得到完全相同的错误消息,但我遇到了类似的总体问题,直到我意识到您还需要两个 JAR 才能成功使用 ScalaTest: scala-reflect-2.11.4.jar
和scala-xml-2.11-1.0.2.jar
.
如果您坚持手动执行此操作,您还应该确保您的测试位于标记为“测试”目录的目录中 - 因此以绿色突出显示:您可以在相同的“模块”上实现此目的”选项卡,但位于“源”子选项卡而不是“依赖项”。您还需要检查“依赖项”子选项卡的“范围”列中,您添加的 jar 被标记为“测试”而不是“编译”。
另一方面,如果您在 IntelliJ 中创建 SBT 项目而不是常规 Scala 项目,则只需将以下内容添加到 build.sbt 中即可:
libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.1" % "test"
出现提示时重新导入 build.sbt,然后您可以开始编写和运行测试:所有依赖项和测试目录都已正确设置,并且一切都“正常工作”。我刚刚以这种方式创建了一个空项目并运行了您的示例。从开始到结束大约花了一分钟。
显然,您面临着手动管理 JAR 和学习另一种工具之间的权衡,但此时学习 SBT 的基础知识可能值得您花时间。
关于Intellij 中断言和测试的 ScalaTest 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27769649/