build.sbt配置后it:test无法执行JUnit集成测试用例如何解决
解决方案
1. 修正集成测试执行命令
sbt 1.x及以上版本默认使用斜杠语法替代旧的冒号域分隔语法,你使用的it:test属于旧版语法,当前默认不识别,正确执行命令为:
sbt IntegrationTest/test
2. 补充JUnit相关依赖
你当前的测试用例使用JUnit注解实现,仅依赖scalatest无法识别JUnit类型的测试用例,需要在build.sbt中新增JUnit相关依赖:
lazy val root = (project in file(".")) .configs(IntegrationTest) .settings( Defaults.itSettings, libraryDependencies ++= Seq( "org.scalatest" %% "scalatest" % "3.0.5" % "it,test", // 新增JUnit依赖 "junit" % "junit" % "4.13.2" % "it,test", // 新增sbt JUnit测试执行接口 "com.github.sbt" % "junit-interface" % "0.13.3" % "it,test" ) )
3. 校验集成测试目录结构
sbt默认只会识别标准路径下的测试源文件,你需要确保Tester.scala的存放路径符合以下层级:
src ├── it │ └── scala # 必须新增scala层级目录 │ └── RegexExtractor │ └── Tester.scala ├── main └── test
如果直接将Tester.scala放在it根目录下,sbt不会将其识别为测试源文件。
4. 可选配置:保留旧版it:test命令
如果你习惯使用旧的it:test执行集成测试,可以在build.sbt的settings块中添加命令别名:
addCommandAlias("it:test", "IntegrationTest/test")
完成以上配置后重新加载sbt项目,即可正常执行集成测试。
内容的提问来源于stack exchange,提问作者kiran
相关产品推荐
相关产品推荐

