Expecting Exceptions with JUnit doesn't work
我为我的方法编写了一个JUnit测试。
这是我的方法:
1 2 3 4 5 6 | public static int delimit(int value, int min, int max) throws IllegalArgumentException { if (min > max) throw new IllegalArgumentException("Min value was greater than max value."); return Math.min(max, Math.max(min, value)); } |
这是测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class DMathTest extends TestCase { @Rule public ExpectedException exception = ExpectedException.none(); @Test public void testDelimit() { ... exception.expect(IllegalArgumentException.class); DMath.delimit(1, 3, 2); } } |
确实抛出了
然后我删除了规则和所有期望代码,结果完全相同(当然,这应该是这样的)。 所以规则和电话
1 |
什么也没做
我正在使用Eclipse,我使用Maven包含JUnit。 dependency元素如下所示:
1 2 3 4 5 6 | <dependency> <groupId>junit</groupId> junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> |
我做错了什么? 为什么异常的期望不起作用?
1 2 | public class DMathTest extends TestCase { ^^^^^^^^^^^^^^^^ |
这可能是错误。 TestCase是JUnit 3.x API。 JUnit 4.x测试不再扩展该类,并且可能通过扩展它来改变语义。 请删除extends子句并重试,否则,您的代码看起来正确。
此外,在JUnit 4.x中,您不再需要使用"testXyz"命名约定。 方法名称可以是任何名称,只要该方法是公共的并使用