処理の特定の時点で、特定の不変条件が保持されることを期待する方法があります。
この些細なことを保つために、コード処理中のポイント X で、変数high
と変数low
が割り切れなければならないとしましょう。
だから私が行うコードでは:
if(high % low != 0){
throw new AssertionError("Invalid state of low and high [low = "+ low+ ", high=" + high+"]");
}
単体テスト中JUnits
に、これをテストするテストケースがありました。
だから私はした:
try {
//At this point I know for sure that the low and high are not divible so process() should throw an Assertion Error
process();
fail();
}
catch(AssertionError e){
}
しかし、テストケースは緑色でした!
しかし、junitが原因でアサートエラーが発生することに気付きましたfail
が、それをキャッチした結果、テストケースは失敗ではなく合格になりました。
私の観点からすると、私のコードで発生させる適切なエラーもAssertionError
一般的なものではありません。たとえば、テストケースが機能するようにこれを修正する方法はありますか、それとも最初からコードでIllegalArgumentsException
使用すべきではありませんか? AssertionError
この場合、どの例外を発生させる必要がありますか?