Java 为什么可以';我不能在travis或circle CI环境上获得测试资源吗?
在远程CI环境中运行项目的junit测试时,我遇到了一个非常恼人的问题 在我的本地机器上,使用java 1.8.0_181和maven 3.5.4,我没有任何问题 我曾经使用以下两种方式获得测试资源:Java 为什么可以';我不能在travis或circle CI环境上获得测试资源吗?,java,junit,maven-3,travis-ci,circleci,Java,Junit,Maven 3,Travis Ci,Circleci,在远程CI环境中运行项目的junit测试时,我遇到了一个非常恼人的问题 在我的本地机器上,使用java 1.8.0_181和maven 3.5.4,我没有任何问题 我曾经使用以下两种方式获得测试资源: String expected = Utils.readStream(new FileInputStream( "src/test/resources/testdata/fragment-subdir-absolute-path.txt")); 使用此选项
String expected = Utils.readStream(new FileInputStream(
"src/test/resources/testdata/fragment-subdir-absolute-path.txt"));
使用此选项,我得到一个未找到的文件:
java.io.FileNotFoundException:fragment-subdir-absolute-path.txt(否
此类文件或目录)
因此:
String expected = Utils.readStream(new FileInputStream(getClass()
.getResource("/testdata/fragment-subdir-absolute-path.txt")
.getPath()));
在这种情况下,我得到一个NPE:
[错误]TestFragmentHost时间已过:0.03秒好吧,令人尴尬的是,在许多小时之后,我发现了问题所在……:) 罪魁祸首是一个复制的.gitignore文件,其中包含以下内容:
# Package Files #
target
*.jar
*.txt
EclipseIDE在未受限制的文件上添加了一个小的询问图标,在提交的文件上添加了一个小的repo图标,只需从被忽略的文件中删除该图标即可。
我只是没有注意那些被忽视的
因此,我将该文件更改为:
# Package Files #
target/*.jar
target/*.txt
神秘的单元测试错误已经消失了
感谢大家一直以来的支持……Hi Cristiano,您是否可以分享您所面临的确切错误的堆栈跟踪信息?此外-即使我怀疑它不会改变任何东西,另一种尝试方法是
Utils.readString(getClass().getResourceAsStream(“/testdata/fragment subdir absolute path.txt”)
Hi@Matthiasuttar,我已经更新了这个问题。感谢如果您的构建在远程CI服务(而不是本地)上失败,我倾向于认为您的CI配置有问题。您的本地计算机上有一些可以进行编译的工件,您没有指示CI服务获取它们。尝试在干净的系统(或Docker映像)上从头开始设置存储库。