如何让文件操作在Jenkins中工作?

时间:2017-10-02 16:51:24

标签: maven jenkins junit

我在使用Maven构建的JUnit中编写了一些使用File和FileWriter API的测试,测试在我的本地计算机上运行,​​但在我尝试在Jenkins中构建时却没有。是否有一个特殊的约定我必须遵循以使我的测试在Jenkins中工作?

在我的测试文件中,我正在初始化资源文件夹所在位置的一些路径:

  private String resourcesFolderPath = new File("src/test/resources").getAbsolutePath();
  private String outputFolderPath = resourcesFolderPath + "/output";
  private File outputFolder = new File(outputFolderPath);

这是詹金斯失败的测试:

@Test
public void test() throws Exception {
    File file = new File(outputFolder.list()[0]); // File not found exception at this line
    if (!file.exists()) file.mkdirs(); // I added this line after Jenkins build failed, did not fix the problem
    String fileListName = file.getName();

    FileReader fileReader = new FileReader(outputFolderPath + "/" + fileListName);
    BufferedReader buffReader = new BufferedReader(fileReader);

    String firstFileName = buffReader.readLine();

    assertTrue(firstFileName.contains("test1.txt"));

    buffReader.close();
  }

输出文件夹包含我要测试的文件,但Jenkins因FileNotFoundException失败:

java.io.FileNotFoundException: /home/jenkins/workspace/utils-feature-branches-ci/file-list/src/test/resources/output/File_List.txt (No such file or directory)

奇怪的是,当使用Maven构建时,此测试在我的本地计算机上运行,​​但不是在Jenkins上。所以我的问题是如何修改我的代码,以便这个测试适用于Jenkins?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

通过JUnit运行Test类时,src/test/resources将成为您的类路径。

因此,添加此行将足以达到您的目的

File file = new File("output");