首页 > 解决方案 > 是否可以在包对象中进行最大规模的发现?

问题描述

我有几个测试方面共享多个测试类,所以我将它们聚合成一个特征以混合到包对象中,期望这些测试类将在包下被发现:

(在特质上)

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 运行所有测试时,似乎无法发现这些类(Suite1、Sutie2、Sutie3)com.spike.scalatest_spike,这些类似乎在类发现中被忽略了。

我应该对我的项目或/和 scalatest 源代码进行哪些更改以使其正常工作?

标签: scalascalatestjava-package

解决方案


如果您使用 SBT 调用测试,请确保源位于 src/test/scala 或 src/test/java 中,如文档所示:https ://www.scala-sbt.org/1.x/docs/Testing.html

如果您使用带有javaorscala命令的 jar,则 jar 中可能缺少您的测试类。前一种方法可能更容易,因为它不需要一个 jar 来拥有所有的测试类。


推荐阅读