Scala项目@Suite.SuiteClasses不生效 sbt test未执行测试方法如何解决
问题解决方案
- 修正集合类型不匹配问题:你代码中
util.List的泛型参数误用了Scala原生Map,需显式指定为Java的java.util.Map,修改后的方法实现如下:
import java.util.{List, Map, ArrayList} import org.junit.runner.RunWith import org.junit.runners.Suite @RunWith(classOf[Suite]) @Suite.SuiteClasses(Array(classOf[Level2TestReporter])) class OrganizationRegexModelComponentTester extends ITester { override def testComponent(input: java.util.Map[String, Object], metadata: java.util.Map[String, Object]): util.List[util.Map[String,AnyRef]] = { val list: util.List[util.Map[String, AnyRef]] = new util.ArrayList[util.Map[String, AnyRef]]() list } }
- 调整sbt测试类匹配规则:sbt默认仅识别名称满足
*Test、*Suite、*Spec后缀的类作为测试类执行,你的类名后缀为Tester不在默认规则内,可在build.sbt中添加配置修改匹配规则:
Test / testOptions += Tests.Argument("-q", "-n", ".*Tester$") // 或者直接扩展测试类命名匹配规则 Test / includeFilter := (Test / includeFilter).value || "*Tester"
- 补全JUnit相关依赖:sbt执行JUnit测试需要依赖专用的测试接口,确认
build.sbt中已添加如下依赖,同时检查iteser.jar是否已正确加入项目依赖:
libraryDependencies += "junit" % "junit" % "4.13.2" % Test libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % Test // 引入本地iteser.jar的示例配置 unmanagedJars in Compile += file("lib/iteser.jar")
- 校验测试方法规范:确认
Level2TestReporter类中带@Test注解的方法符合JUnit 4要求:方法修饰符为public、返回值为void、无输入参数。
内容的提问来源于stack exchange,提问作者kiran
相关产品推荐
相关产品推荐

