2017-12-03 14 views
0

として、ファイルの一覧で、ボイドメソッドをテストするために、私は内側に、このメソッドを持つクラスがあります:私はメソッドをテストしたい、と下記に示すように私はそれを行うために始めたのJUnit - Javaの - どのようにパラメータ

public class DirectoryWalker { 

     public void visitDirectory(String path,List<File> resultList) {...} 
     ... 
     } 

を。

@Test 
     public void ListOfTheFiles(){ 

     List<File> result = directoryWalker.visitDirectory("pathFile", new ArrayList<File>()); 
     Assert.assertThat("path\File\\0A54-4444-2441-D554.xml", is(result)); 

正直言って私は、パラメータとしてリストを持つvoidメソッドをテストしようとするのは初めてですから、少し混乱しています。

私はこのファイルを期待:フォルダに

"path\File\\0A54-4444-2441-D554.xml 

File

は、あなたが私を助けてくださいもらえますか?おかげ

EDIT:

List<File> result = directoryWalker.visitDirectory(...); 

すべてのクラス:

public class DirectoryWalker { 

    public void visitDirectory(String path, List<File> resultList) { 

     File root = new File(path); 

     File[] list = root.listFiles(); 

     for (File f : list) { 
      if (f.isFile() && f.getName().toLowerCase().endsWith(".xml")) { 
       resultList.add(f); 
      } else if(f.isDirectory()) { 
       visitDirectory(f.getAbsolutePath(),resultList); 
      } 
     } 
    } 
} 

答えて

3
Assert.assertThat("path\File\\0A54-4444-2441-D554.xml", is(result)); 

有用である可能性があります。パターンは次のとおりです。

assertThat([ACTUAL_RESULT], [matcher]([EXPECTED_RESULT])) 

これは逆です。

次に、予想される結果がListである場合、それはなぜStringと比較されますか?

それは次のようにする必要があります:ところで

@Test 
    public void ListOfTheFiles(){ 
    List<File> result = new ArrayList<>(); 
    directoryWalker.visitDirectory("pathFile", result); 
    Assert.assertThat(result, hasItem(new File("path\File\\0A54-4444-2441-D554.xml"))); 

は、ハードコードファイルパス中のバックスラッシュ(\)を避けます。代わりにスラッシュ(/)を使用してください。これにより、非Windowsシステムとの互換性が保証されます。これは、Java(C#ではなく)を使用する主な理由の1つです...

+0

@Timothty Truckle:あなたの解決策を試してみます – StoreCode

+0

@StoreCodeマッチャーメソッドが間違っていたので修正しました... –

+0

@Timothty Truckle:それは与える私は 'エラー 'としてエラーを含んでいます。 – StoreCode

3

のテスト結果は、ファイルの一覧としてinizializedされているため、このistructionは間違っているもちろん、 voidメソッドは、実行する必要があるかどうかをテストするのと同じです。このメソッドは値を返さないので、result = class.method(...)のようなことはできません。

このメソッドは何をしますか?それはあなたが間違った方法でアサートを使用している...

+0

メソッドを検索し、 ) – StoreCode

+0

IMO Timothyさんのコメントが終了します) –