編集: バグへの JeffStorey リンクが正しいようです。アサーションを有効にすると、コンパイラは追加のコードを生成します。最終的に、到達不能なブランチが 1 つ作成されます。
メソッドコンストラクターの1つにこれらのアサートがあります
public Board(int w, int h) {
assert w >= 0 : "PRE1: width should be >= 0 but is " + w;
assert h >= 0 : "PRE2: height should be >= 0 but is " + h;
}
私はこれを行うことでそれをカバーしようとしています
public void testInvalidBoardWidth() {
try {
Board badBoard = new Board(-2, 2);
fail();
} catch (AssertionError err) {
assertTrue(true);
}
}
@Test
public void testFailBoardHeight() {
try {
Board InvalidBoard = new Board(2, -4);
fail();
} catch (AssertionError err) {
assertTrue(true);
}
そして再び値で
Board (-4 , 2)
とBoard (2, 2)
そのため、アサートとパスの両方で失敗する場所をテストしました。私が間違っていない場合、すべてのケースをカバーしていますが、コード カバレッジ ツールの eclEmma Eclipse プラグインを使用すると、完全にはカバーされていないと主張されます。私はすでに-ea
日食のカバレッジ引数を持っているので、アサーションが有効になっています。私のテストは不完全ですか、それともアサーションが完全にカバーされていない可能性がありますか? ありがとう。