Java 在本地读取测试源文件,但在 Bamboo 服务器上读取失败

Java reads test source file locally, but fails to read on Bamboo server

位于 src\test\java\irmsUtilities\General\MyTest.java 的 JUnit 测试从 src\test\resources​\ 读取文件,例如 src\test\resources​\MyData1.txt。 Windows框有两个类似的实现:

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 (No such file or directory)​

我应该如何更改 IO 以获取测试文件 son 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()。