我正在编写一个类似这样的void验证方法:
void validate(SomeObject someObject) {
if (check someObject with constraints) {
throw new SomeException();
}
}
要对此方法进行单元测试,我想测试合法和非法输入:
答案 0 :(得分:2)
在这种情况下,法律意味着验证完成,没有例外。要测试它,您只需要调用validate。
y[1]
只有在验证期间抛出异常时,此测试才会失败。
答案 1 :(得分:2)
第一个测试案例:
@Test
public void testOK() throws Exception {
validate(someObject);
// At Least 1 assertion
}
第二个测试案例:
@Test(expected=SomeException.class)
public void testException() throws Exception {
try {
validate(someObject);
} catch(SomeException e) {
// At Least 1 assertion
throw e;
}
}
在第二个测试用例中,如果没有抛出异常,测试将失败,因为它需要SommeException.class。
至少有一个断言是强制性的,因为你必须验证抛出的异常是否符合预期的异常。
答案 2 :(得分:0)
要测试someObject
合法的情况,只需在validate
块中调用try
即可。如果抛出异常,则测试失败。如果没有抛出异常,请让测试正常结束并通过,因为这是预期的行为。
示例如下所示:
@Test
public void myTest() {
try {
validate(new SomeObject());
} catch (Exception e) {
fail("expected no exception, but one was thrown.");
}
}