0

我有一个方法: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).

我当然理解它,但是我如何检查函数,它的返回值是无效的?

4

5 回答 5

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。)

于 2012-04-22T15:44:20.120 回答
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
}

足够了。如果抛出异常,测试将自动失败。

于 2012-04-22T15:52:55.907 回答
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);
}

你可以看看这个链接

于 2012-04-22T15:58:19.710 回答
0

检查添加医生后队列是否已更改。

于 2012-04-22T15:40:48.850 回答
0

我如何检查函数,它的返回值是无效的?

你不能。您只能检查它是否在应该抛出异常时抛出异常,例如错误参数等,并通过以下方式通知Assert.fail()
您可以做的是创建一个包装方法来检查此方法的副作用并返回truefalse调用它断言

于 2012-04-22T15:42:08.303 回答