尝试在远程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"));
使用此方法我找不到文件:
java.io.FileNotFoundException:fragment-subdir-absolute-path.txt(否 这样的文件或目录)
并以此:
String expected = Utils.readStream(new FileInputStream(getClass()
.getResource("/testdata/fragment-subdir-absolute-path.txt")
.getPath()));
在这种情况下,我得到了NPE:
[错误] testFragmentFragmentHost经过的时间:0.03 s <<<错误! java.lang.NullPointerException 在org.osgi.service.indexer.impl.IndexerUnitTest.assertFragmentMatch(IndexerUnitTest.java:58) 在org.osgi.service.indexer.impl.IndexerUnitTest.assertFragmentMatch(IndexerUnitTest.java:71) 在org.osgi.service.indexer.impl.IndexerUnitTest.testFragmentFragmentHost(IndexerUnitTest.java:205)
但是任何人都在远程CI内部进行工作。找不到文件。
答案 0 :(得分:0)
令人尴尬的是,经过许多小时,我发现了问题所在...:)
罪魁祸首是复制的.gitignore文件,其中包含以下内容:
# Package Files #
target
*.jar
*.txt
Eclipse IDE在未提交的文件上添加了一个小的询问图标,在已提交的文件上添加了一个小的repo图标,只是从被忽略的文件中删除了该图标。 我只是不注意那些被忽略的东西。
因此,我将该文件更改为:
# Package Files #
target/*.jar
target/*.txt
神秘的单元测试错误消失了。
感谢所有的时间...