为 Scala 的 OSS 生态系统做出贡献

运行测试套件

语言

Partest 是我们用来运行 Scala 编译器和库的测试套件的自定义并行测试工具。从本地检出转到 scala 项目文件夹,并通过 sbtant 或独立运行,如下所示。

使用 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 文件夹中包含启动脚本 partestpartest.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

此页面的贡献者