我有一个maven项目,它是在Jenkins中构建和测试的。在我的本地计算机上,测试运行成功,但在Jenkins中,无法加载测试所需的文件。我使用this.getClass.getResourceAsStream("testfile.dat")
加载资源。似乎Jenkins没有将资源文件复制到运行测试的目录中。这是一个maven问题吗?我如何建议Jenkins / Maven将资源复制到测试类路径?
答案 0 :(得分:5)
将测试资源放在Maven项目的src/test/resources
树中。 Maven将确保在运行测试时它们位于类路径中,因此可以使用getResourceAsStream(...)
找到它们。
答案 1 :(得分:0)
当您使用带有未指定包的字符串参数的getResourceAsStream
时(如示例“testfile.dat”中),资源必须位于完全相同的包(也称为文件夹)中您正在调用Class
方法的getResourceAsStream
对象。你应该检查这两个类,它的资源是否真的在同一个包中。
您可能希望查看Maven在打包项目时生成的target
文件夹,您可以找到资源的最终位置。
答案 2 :(得分:0)
我遇到了类似的问题,但由于各种原因,我不想将资源转移到src / test / resources。 不过我可以通过将所有子文件夹显式添加到pom.xml来解决问题,如下面的代码段所示:
<build>
<resources>
<resource>
<directory>myFolder/subFolder1</directory>
</resource>
<resource>
<directory>myFolder/subFolder2</directory>
</resource>
<resource>
<directory>myFolder/subFolder3</directory>
</resource>
</resources>
[....]
</build>