我有一个同时使用 Scala 和 Java 代码的 scalatest 案例,并且在代码的 Java 部分中调用了:
getClass().getResourceAsStream("/dbLocations.properties");
这对于使用 JUnit 的代码的其他部分来说很好,但我正在重写 Scala 测试类以使用 Scalatest(有人用 JUnit 编写它们),并且在执行运行上述代码的测试时,它的属性负载来自 src/main/resources,而不是 src/test/resources。
我是否缺少任何配置?我之所以使用 Maven,是因为该项目包含大量 Java 部分(以及 Maven 而非 SBT 的总体开发人员体验)。
最佳答案
这最终是一个 Maven 问题,我本地 Maven 存储库(我有其源代码)中的依赖项 JAR 中包含生产值。我现在使用 maven-jar-plugin 为该依赖项创建一个测试 jar:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
然后将其作为依赖项包含在另一个项目中,范围设置为“测试”,因此测试 jar 仅在我测试时位于类路径上,注意将测试 jar 首先放在类路径,以便当它们都在其上时,在检测另一个(生产)JAR 之前会拉入测试资源:
<dependency>
<groupId>com.example</groupId>
<artifactId>naughty-dependency</artifactId>
<version>1.0.5-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>naughty-dependency</artifactId>
<version>1.0.5-SNAPSHOT</version>
</dependency>
在我看来似乎有点老套,但它确实有效!
关于java - 使用主要资源而不是测试资源进行 Scalatest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010879/