假设 MyList 的 add 方法接受一个参数,并指定抛出NullPointerException,如果给出 null 作为其参数。完成此 JUnit 测试方法以测试添加方法:
public void testAddNull() {
MyList<String> ls = new MyList<String>();
}
这是答案:
public void testAddNull() {
MyList<String> ls = new MyList<String>();
try {
ls.add(null);
fail();
} catch (NullPointerException e) {
}
}
为什么 fail(); 这里需要,ls.add(null) 不会导致它失败,所以在这里放 fail(); 不是多余的吗?
ls.add(null);
不抛出NullPointerException
,上述测试方法将失败。由于所需的行为是抛出异常,因此当在 catch (NullPointerException e)
捕获异常时,测试将通过。
使用 Junit 4 您还可以执行以下操作:
@Test(expected = NullPointerException.class)
public void testAddNull() {
ls.add(null);
}
这将需要经过测试的代码抛出NullPointerException
.否则,测试将失败。