首页 > 解决方案 > sbt it:test 找不到 IntelliJ 可以的测试资源文件

问题描述

我正在scala(播放框架)中编写集成测试方法。测试类是 SourceIntegrationTest。我在 /test/resources 中放置了一个文件 source.json。我知道“sbt 将文件从 src/test/resources 复制到 target/scala-[scalaVersion]/test-classes” ,如本答案中所述。但是,在 IntelliJ 中运行我的测试时,使用那里引用的答案只对我有用。当我sbt it:testOnly SourceIntegrationTest在终端中运行时,我的测试失败并出现 NullPointerException。sbt 找不到 source.json。在终端中运行集成测试时,如何让 sbt 找到我的文件?

我的测试方法如下:

@Test
def testGetSource(): Unit = {
  val jsonSource: String = Source.fromInputStream(getClass.getClassLoader.getResourceAsStream("source.json")).mkString
  val json: JsValue = Json.parse(jsonSource)
  val source = controller.getSource(json)
  assertEquals(source.sourceName = "Premier")
}

标签: scalaintellij-ideaplayframeworksbt

解决方案


编写集成测试时,测试文件不会放在 test 文件夹中。您需要为集成测试创建另一个目录。现在源文件夹将包含三个目录 main、test、it。所有集成测试都将保存在该文件夹中。你可以在这里阅读


推荐阅读