Partest 是我们用来运行 Scala 编译器和库的测试套件的自定义并行测试工具。从本地检出转到 scala 项目文件夹,并通过 sbt
、ant
或独立运行,如下所示。
使用 sbt
可以使用以下命令从 sbt 控制台运行测试套件
sbt:root> partest
你可以通过运行 partest --help
来获取用法摘要。
如果你想运行特定测试,请将测试路径作为参数传递
sbt:root> partest test/files/pos/bounds.scala test/scaladoc/run/diagrams-base.scala
要仅运行 Scaladoc 测试,请使用 --srcpath
和测试位置
sbt:root> partest --srcpath scaladoc
使用 ant
请注意,在 2.12 分支中已移除对 ant 的支持。
可以使用 ant 从命令行运行测试套件
$ ant test.suite
独立
请注意,下面提到的独立脚本已在 2.12.2 中移除。sbt 是运行测试套件的首选方式。
scala 项目的 test
文件夹中包含启动脚本 partest
和 partest.bat
。若要让 partest 仅运行失败的测试,并将测试失败的详细信息打印到控制台,可以使用
./test/partest --show-diff --show-log --failed
不带参数运行 partest,即可获得用法摘要。
- 通常,你希望使用选项调用 partest,该选项会告诉它要运行的测试部分。例如
--all
、--pos
、--neg
或--run
。 - 你可以通过将各个测试文件(
.scala
文件)指定为选项来测试各个文件。如果它们属于同一类别,则可以测试多个文件,例如pos
。 - 你可以使用
-show-log
和-show-diff
选项启用日志和差异输出。 - 如果你遇到了真正的麻烦,并想找出 partest 的作用,则可以使用选项
--verbose
运行它。此信息作为错误报告的一部分非常有用。 - 设置加载类的自定义路径:
-classpath <path>
和-buildpath <path>
。 - 你可以使用
SCALAC_OPTS
环境变量将命令行选项传递给编译器。 - 你可以使用
JAVA_OPTS
环境变量将命令行选项传递给运行器(例如,用于run/jvm
测试)。 -
启动脚本以如下方式运行 partest
scala -cp <path to partest classes> scala.tools.partest.nest.NestRunner <options>
例如,可以从
./build/quick/classes/partest/
中找到quick
构建的 Partest 类。Partest 会通过添加
partest.debug
属性来告诉你它从何处加载编译器/库类scala -Dpartest.debug=true -cp <path to partest classes> scala.tools.partest.nest.NestRunner <options>
ScalaCheck 测试
依赖于 ScalaCheck 的测试可以添加到 ./test/files/scalacheck
文件夹下。一个示例测试
import org.scalacheck._
import Prop._
object Test {
val prop_ConcatLists = property{ (l1: ListInt, l2: ListInt) =>
l1.size + l2.size == (l1 ::: l2).size
}
val tests = List(("prop_ConcatLists", prop_ConcatLists))
}
故障排除
Windows
某些测试可能会失败,因为 .check
文件和生成结果中的行尾不匹配。在这种情况下,设置
git config core.autocrlf false
或
git config core.autocrlf input