【发布时间】:2012-01-24 14:30:00
【问题描述】:
我正在测试一个供 Xalan 使用的 WeekConverter,并且想知道我的测试到底在做什么。 :D
具有以下测试方法:
@Test(expected = IllegalArgumentException.class)
public void testConvertTwoDigitYearWithWrongInput() {
WeekConverter weekConverter = new WeekConverter(WeekConverter.Strategy.TWO_DIGIT_YEAR);
//wrong or empty inputs
assertEquals("0", weekConverter.convert(""));
assertEquals("0", weekConverter.convert("abcdefgh"));
}
这个测试会期望所有断言的异常,还是只针对第一个断言?如果只是第一个,这意味着我必须为每个断言创建一个测试方法,尽管我期望在这两种情况下都会出现相同的异常。有人可以在这里确认我的例子吗?
我还有一个 null 测试,它会产生 NullPointerException。软验证如下:
if (inputDate == null) {
do something and throw NullPointerexception
} else if (inputDate.isEmpty()) {
do something and throw IllegalArgumentException, since inputDate is not really null
} else if (inputDate.matches(regex)) {
go futher and convert
} else {
do something and throw IllegalArgumentException, since inputDate does not match regex
}
因此,一个测试方法期望 IllegalArgumentException 带有两个断言。但很明显,我需要两种不同的测试方法,不仅要尊重 JUnit 的功能,而且我希望从两种不同的状态抛出。
【问题讨论】:
-
因为你期待一个异常,你不需要断言等于——你只需要调用转换。
标签: java exception junit xalan