位于src\test\java\irmsUtilities\General\MyTest.java
中的JUnit测试从src\test\resources\
读取文件,例如 src\test\resources\MyData1.txt
。
Windows box 有两种类似的实现:
private String readResourceFile(String fileName) throws IOException { // fileName = "/MyData1.TXT"
StringBuilder retStr = new StringBuilder();
URL url = this.getClass().getResource(fileName);
InputStream is = url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) { retStr.append(line).append("\n"); }
return retStr.toString();
}
或者
private String readResourceFile(String fileName) throws IOException {
StringBuilder retStr = new StringBuilder();
fileName = "src/test/resources"+fileName;
BufferedReader br = new BufferedReader(new FileReader(new File(fileName)));
String line;
while ((line = br.readLine()) != null) {
retStr.append(line).append("\n");
}
return retStr.toString();
}
上面的代码读取文件并在本地(Windows)通过测试,但无法在 Bamboo 服务器上找到文件。
java.io.FileNotFoundException:src/test/resources/MyData1.TXT(没有这样的文件或目录)
我应该如何更改 IO 以获取子 Bamboo 的测试文件?
最佳答案
Bamboo 服务器在 Linux 上运行?
对于 Windows 文件 src\test\resources\MyData1.txt 和 src/test/resources/MyData1.TXT 是相同的; Linux文件系统区分大小写,因此MyData1.txt和MyData1.TXT是两个不同的文件。
此外,出于同样的原因(Win vs *nix)硬编码 EOL(“\n”)也是个坏主意 - 请改用 System.lineSeparator()。
关于Java在本地读取测试源文件,但在Bamboo服务器上读取失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52408872/