scala - 是否可以在包对象中进行最大规模的发现?
问题描述
我有几个测试方面共享多个测试类,所以我将它们聚合成一个特征以混合到包对象中,期望这些测试类将在包下被发现:
(在特质上)
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 源代码进行哪些更改以使其正常工作?
解决方案
如果您使用 SBT 调用测试,请确保源位于 src/test/scala 或 src/test/java 中,如文档所示:https ://www.scala-sbt.org/1.x/docs/Testing.html
如果您使用带有java
orscala
命令的 jar,则 jar 中可能缺少您的测试类。前一种方法可能更容易,因为它不需要一个 jar 来拥有所有的测试类。
推荐阅读
- google-apps-script - 发布 Google Docs Add on
- function - 如何制作在惰性列表(又名“Streams”)上运行的函数?
- sql - 左连接的 SQL 顺序,包括不匹配
- webpack - 如何在自定义 webpack 加载器中使用“导入”语句
- angular - 带有关键字前缀的Angular 5+路由参数
- sql - 如何避免输入密码
- bash - 当管道中发生错误时,如何使 bash 脚本最终失败
- amazon-web-services - GCS 到 S3 传输 - 提高速度
- python - 如何让 2 个客户端在都连接了会面点服务器后直接相互连接?
- excel - 如何比较两个不同excel工作表中的两个单元格范围?