我有几个测试方面共享多个测试类,所以我将它们聚合为一个特性,以混合到包对象中,期望这些测试类将在包下被发现:
(特征(
trait AbstractPackageTests {
val name: String
class Suite1 extends FunSpec {
describe(name) {
it("test 1") {}
it("test 2") {}
}
}
class Suite2 extends FunSpec {
describe(name) {
it("test 3") {}
it("test 4") {}
}
}
}
(包装1(
package com.spike.scalatest_spike
package object facet1 extends FunSpec with AbstractPackageTests {
override val name: String = "facet 1"
class Suite3 extends FunSpec {
describe(name) {
it("test 5") {}
}
}
}
(包装2中(
package com.spike.scalatest_spike
package object facet2 extends AbstractPackageTests {
override val name: String = "facet 2"
}
不幸的是,当我调用scalatest在com.spike.scalatest_spike
下运行所有测试时,似乎无法发现这些类(Suite1、Suite2、Sutie3(,这些类在类发现中似乎被忽略了。
我应该对我的项目或/和scalatest源代码进行哪些更改才能使其正常工作?
如果您使用SBT来调用测试,请确保源位于src/test/scala或src/test/java中,如文档所示:https://www.scala-sbt.org/1.x/docs/Testing.html
如果您使用带有java
或scala
命令的jar,那么jar中可能缺少测试类。前一种方法可能更容易,因为它不需要一个jar来拥有所有的测试类。