我有一个方法:doctorQueue
,它有三个参数:数据类型(通过java.util.Date),时间和ID(字符串)。
返回值为void
,如果同时已经有队列,则会给出一个例外。
我使用Junit编写了下一个方法:
public void checkQueueDoctor(){
Date date = new Date (2012,4,25);
Time time = new Time (13, 0, 0);
assertTrue(doctorQueue("83849829", date, time));
..... // and so on
}
它给了我下一个问题:The method assertTrue(boolean) in the type Assert is not applicable for the arguments (void)
。
我当然理解它,但我怎么能检查功能,它返回的值是无效的?
答案 0 :(得分:1)
如果要测试void方法不会抛出异常,则常见的模式是:
try {
doctorQueue("83849829", date, time);
// if we make it to this line, success!
} catch (Exception e) {
fail("queue adding threw an exception");
}
如果您还有其他情况需要检查方法是否抛出异常,只需将失败调用移到另一个块:
try {
doctorQueue(alreadyPresentElement, date, time);
fail("expected an exception but didn't get one!");
} catch (Exception e) {
// we expected an exception and got it! Success!
}
(顺便说一句,在任何一种情况下,除了Exception
之外,抓住更具体的例外情况可能更好。)
答案 1 :(得分:1)
public void checkQueueDoctor(){
Date date = new Date (2012,4,25);
Time time = new Time (13, 0, 0);
doctorQueue("83849829", date, time);
..... // and so on
}
就足够了。如果抛出异常,测试将自动失败。
答案 2 :(得分:1)
如果您使用的是JUnit 4,则可以检查预期的异常,例如:
@Test(expected = Exception.class)
public void checkQueueDoctor() throws Exception {
Date date = new Date (2012,4,25);
Time time = new Time (13, 0, 0);
doctorQueue("83849829", date, time);
}
您可以查看此link
答案 3 :(得分:0)
添加医生后检查队列是否已更改。
答案 4 :(得分:0)
我怎么能检查函数,它的返回值是无效的?
你做不到。你只能检查它是否应该抛出一个例外,例如不良论点等,并通过Assert.fail()
发送通知
你可以做的是创建一个包装方法来检查这个方法的副作用并返回true
或false
并从断言中调用