scala - 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")
}
解决方案
编写集成测试时,测试文件不会放在 test 文件夹中。您需要为集成测试创建另一个目录。现在源文件夹将包含三个目录 main、test、it。所有集成测试都将保存在该文件夹中。你可以在这里阅读
推荐阅读
- python - Python:如何通过被另一个字符串列表分割的子字符串创建一个列表?
- sql - 展平/统一表行,其中条件与 ABAP 或 SQL 匹配数组
- webpack - 无法处理堆栈输出:require(...)[func] 不是函数
- javascript - 在 Blazor 服务器应用程序中使用 Canvas 并在加载时运行函数
- javascript - 为什么这没有在表单上显示电子邮件?
- c - C 中的 Fizzbuzz 访问磁盘
- javascript - 删除所有非数字而不创建新数组
- google-cloud-platform - 将“.eml”文件传输到 Google Cloud Platform 时出现 UnicodeEncodeError(Linux 上的 gsutil v4.6.1)
- android - 如何在 Android 中将 USB_DEVICE_ATTACHED 意图过滤器用于始终连接的 USB 设备
- c# - TryAddEnumerable(ServiceDescriptor) 和其他 TryAdd{lifetime} 调用之间的确切区别是什么