我在我的 Scala 项目中使用 Gradle,对 scalatest 的文档有点沮丧。所以我搜索了一个替代的测试框架。我发现的唯一一个是 µTest(微测试)。但到目前为止,我还没有找到将 µTest 集成到 Gradle 中的方法。
问问题
181 次
1 回答
1
经过一段时间的调查,我找到了解决方案。如果我有一个样本测试:
import utest._
object SampleTests extends TestSuite {
val tests:Tests = Tests {
var x = 0
'outer1 - {
x += 1
'inner1 - {
x += 2
assert(x == 3) // 0 + 1 + 2
x
}
'inner2 - {
x += 3
assert(x == 4) // 0 + 1 + 3
x
}
}
'outer2 - {
x += 4
'inner3 - {
x += 5
assert(x == 9) // 0 + 4 + 5
x
}
}
}
def main(args: Array[String]): Unit = {
val results = TestRunner.runAndPrint(SampleTests.tests, "SampleTests")
}
}
重要的是,有一个 main 函数调用 TestRunner 的方法,其参数类型为 Tests。这个参数可以是一个值或用 def 定义的方法。
此外,测试代码应该在测试源位置内(测试而不是主要)。
要触发此代码,您需要修改 build.gradle 文件。您可以在其中插入用户定义的任务,如下所示:
task microTest(type: JavaExec) {
main = 'package.SampleTests'
classpath = sourceSets.test.runtimeClasspath
}
当然你需要在 build.gradle 中声明对测试框架的依赖:
testImplementation "com.lihaoyi:utest_2.a:x.y.z"
法兹特:
有一种方法可以触发测试
./gradlew microTest
或在 IDE 中用鼠标单击列出的 gradle 任务。测试框架微测试的输出将以预期的方式打印到控制台。但是当您通过在 build.gradle 中定义以下行来间接调用此任务时:
test.finalizedBy microTest
单击 IDE (Intellij) 中的测试任务,然后彩色输出被特殊字符替换。
当不点击(进入命令行:./gradlew test)时,所有输出都正确打印。
于 2020-01-22T07:45:27.440 回答