我用
scala-cli
和scalatest-funsuite
。这是片段
//> using scala 3.3.3
//> using test.dep org.scalatest::scalatest-funsuite:3.2.19
//> using test.dep org.scalatestplus::scalacheck-1-18::3.2.19.0
import org.scalatest.funsuite.*
// import org.scalatestplus.scalacheck.*
class HelloScalatestSuite extends AnyFunSuite {
test("hello() must return hello when no args "){
assertResult(20)(1 + 1)
}
}
在
scala-cli test .
时,测试必须失败,但测试本身不会被识别。 注释掉 //> using test.dep org.scalatestplus::scalacheck-1-18::3.2.19.0
按预期运行测试。同一组依赖项(scalacheck + scalatest 与 sbt 配合良好。
我在 scala-cli 设置中缺少什么?
我认为问题与同时导入了 2 个测试库有关。不确定 ScalaCheck 是否算作 1,但它似乎导致问题表明类似的情况......我认为自动检测会扫描类路径,因此其中的某些内容一定会引起混乱。
当我向 scala-cli 显式指定 ScalaTest 的框架实现时,它开始工作:
//> using testFramework org.scalatest.tools.Framework
该修复原则上可能适用于最终未被检测到的任何测试框架组合。
我发现这个信息是通过注意到 scala-cli 文档提到了 Weaver 的类似内容(
using testFramework
),从一次我读到如何实现你自己的 Scala 测试框架时认识到了 sbt Framework 接口,并在ScalaTest 的 API 文档。