JUnit exception test fails (unexpectedly)
我正在尝试运行JUnit测试来测试将抛出异常的方法。 但是,测试失败了,我不知道它失败的原因。 抛出异常的方法是:calcultor.setN();. 我做了两个版本的测试,即使它们应该通过,它们都会失败。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @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); } |
Amdahl班:
1 2 3 4 5 6 7 8 9 | 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; } } |
1 2 |
和
1 2 | @Rule public ExpectedException exception = ExpectedException.none(); |
相互矛盾并定义一个总是会失败的测试(它必须抛出异常而不是为了通过)。 使用
每当我预料到异常时,我就通过使用try-catch块解决了我的问题。 如果没有异常或错误的异常,则测试失败。
1 2 3 4 5 6 7 8 | @Test public void testSetNZero() { Amdahl calculator = new Amdahl(); try{ calculator.setN(0); fail(); } catch(IllegalArgumentException e){} } |