0

JUnit テストを実行して、例外をスローするメソッドをテストしようとしています。ただし、テストは失敗し、なぜ失敗したのかわかりません。例外をスローするメソッドは、calcultor.setN( ); です。このテストの 2 つのバージョンを作成しましたが、合格するはずなのに両方とも失敗します。

@Rule
public ExpectedException exception = ExpectedException.none();    

@Test
public void testSetNZero() {
    exception.expect(IllegalArgumentException.class);
    exception.expectMessage("Het aantal CPU's is minder dan 1");
    Amdahl calculator = new Amdahl();
    calculator.setN(0);
    fail("Exception not thrown");
}

@Test (expected = IllegalArgumentException.class)
    public void testSetNZero() {
    Amdahl calculator = new Amdahl();
    calculator.setN(0);
}

アムダール級:

public class Amdahl 
{
    private int N;

    public void setN (int n) {
    if(n < 1) throw new IllegalArgumentException ("Het aantal CPU's is minder dan 1");
    this.N = n;
    }
}
4

2 に答える 2

1

testSetNZero次の理由で失敗します。

@Test (expected = IllegalArgumentException.class)
public void testSetNZero() {

@Rule
public ExpectedException exception = ExpectedException.none();

互いに矛盾し、常に失敗するテストを定義します (成功するためには、例外をスローする必要があります)。またはのいずれExpectedException @Test(expected = ...)を使用します。

于 2013-09-07T16:00:11.800 に答える
0

例外が予想されるときはいつでも try-catch ブロックを使用して問題を解決しました。例外が存在しない場合、または間違った例外が存在する場合、テストは失敗します。

@Test
public void testSetNZero() {
    Amdahl calculator = new Amdahl();
    try{
        calculator.setN(0);
        fail();
    } catch(IllegalArgumentException e){}
}
于 2014-07-07T07:41:59.923 に答える