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

标签 java bamboo

位于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/

相关文章:

java - 使用 Java 创建包含图像的 .zip 文件

java - 用于访问服务器文件系统的 HTML 文件打开对话框

java - Sonar java.lang.OutOfMemoryError : PermGen space

amazon-web-services - AWS 使用 Bamboo 删除 ECS 服务 - 该服务无法停止

python - Python 的 doctest 输出可以被 Bamboo 的 JUnit 解析器解析吗?

java - Maven(Java)获取目标目录路径

java - Eclipse Jetty 服务器单实例应用程序

java - 无法从其他方法返回值

git - Bamboo 在源代码检查任务中间歇性失败并显示 "not a git repository (or any of the parent directories): .git"

Bamboo 脚本化构建计划