2017-07-04 5 views
0

テストに使用する関数に少し問題があります。私のテスト方法は次のとおりです。アサート成功後の戻り値

一方のリストが他方に(部分的に)含まれているかどうかを確認する必要があります。

テストが成功したかどうかにかかわらず、結果を返信したいと思います。これを行う方法はありますか、またはassertTrue/assertFalseは常にすぐに終了しますか?

+0

コードは正常に動作するはずです。 – SLaks

+3

条件が満たされない場合、アサーションは例外をスローします。あなたがそれを望まないなら、アサーションを使うのではなく、メッセージを出力したいかもしれません。 – khelwood

+0

AssertionErrorをキャッチして何もしないでください – Zeromus

答えて

1

あなたのメソッドは値を返すか、データを検証する必要があります。それを混ぜないでください。あなたはそれをやったし、今、あなたは問題を抱えている:)

public static List<FieldError> proofFields(final List<String> fieldNames, final 
     List<FieldError> errors){ 
     return errors.stream().filter(fieldError -> 
     fieldNames.contains(fieldError.getField())).collect(toList()); 
} 

public static assertFieldWithError(final List<String> fieldNames, final 
     List<FieldError> errors){ 
     assertEquals(fieldNames.size(), foundFields.isEmpty()); 
     ... iterate do more detail and check ....with assertXXXX(); 
} 

public static assertFieldWithoutError(final 
     List<FieldError> errors){ 
     assertTrue(foundFields.isEmpty()); 
} 

も建設のためのように:

assertTrue(fieldNames.size() == foundFields.size()) 

活用

assertEquals(fieldsAbsent.size() , foundFields.size()); 

それより有益な方法として。

+0

ありがとう、これはそれを組み合わせる良い方法です。 :) – NagelAufnKopp

1

あなたはそれを両方向にすることはできません。あなたのケーキは食べることはできません。

多くのJUnitのアサートのいずれかを使用しているか、または例外をスローしないコードがあります。

意味:その条件が満たされない場合に投げるのはassert()の性質です。

したがって、答え:あなたの要件に応じてクリアを取得する必要があります。特定の状況でテストを実行させたい場合は、assertsを続けてください。結果を常に返す場合は、それらの呼び出しを削除します。

関連する問題