我爲我的方法寫了一個JUnit測試。
這是我的方法:期待與JUnit的例外不起作用
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));
}
這是測試:
public class DMathTest extends TestCase {
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void testDelimit() {
...
exception.expect(IllegalArgumentException.class);
DMath.delimit(1, 3, 2);
}
}
的IllegalArgumentException
確實拋出,但JUnit的標記爲正在測試一個錯誤。它告訴我測試失敗,因爲(預期的)異常。沒有AssertionError或任何東西,它只是顯示我的IllegalArgumentException
,好像整個期望代碼不存在。 然後我刪除了規則和所有的期望代碼,這是完全相同的結果(當然,這是應該如何)。所以規則和通話
exception.expect(IllegalArgumentException.class);
沒有做任何事情。
我使用Eclipse並使用Maven包含JUnit。 dependency元素看起來是這樣的:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
我做了什麼錯?爲什麼期望異常無效?
是的,那是錯誤的。不擴展'TestCase'就可以正常工作。非常感謝你! – David