2017-10-02 39 views
0

FileとFileWriter APIを使用するMavenでビルドされたJUnitでテストしたテストがいくつかありますが、Jenkinsでビルドしようとしたときにテストはローカルマシンで動作しますが、動作しません。 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と連携するように私のコードを変更する方法です。どんな助けもありがとう!

+0

あなたの目的のために十分であろう追加。getResourcesAsStream(「/ whatever.properties」) 。あなたがしたようにディレクトリリストを読むことは、あなたが行ったことを前提にしています。ファイルの順序...ファイルの順序はOS/JDKによって異なりますので、ファイル名を取得する順番については何も仮定しないでください。さらに、 'src/test/resources'ディレクトリからの読み込みにファイル名を使用しないでください。 – khmarbaise

答えて

0

JUnitでテストクラスを実行しているときに、src/test/resourcesがクラスパスになります。

ので `)あなたは`のgetClass(経由で行かなければならないリソースフォルダから何かを読むのが好きならば、この行が

File file = new File("output"); 
+0

ありがとうございますが、私の質問はJUnitについてのものではありません.JUnitについては私がすでに作業している出力パスですが、Jenkinsでは動作しません。 –

関連する問題