Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javajunit/对Junit方法的误解_Java_Junit - Fatal编程技术网

javajunit/对Junit方法的误解

javajunit/对Junit方法的误解,java,junit,Java,Junit,我有一个方法:doctorQueue,它获取三个参数:数据类型(按java.util.Date)、时间和ID(字符串) 返回值为void,如果同时已经有队列,则给出一个exeption 我使用Junit编写了下一个方法: public void checkQueueDoctor(){ Date date = new Date (2012,4,25); Time time = new Time (13, 0, 0); assertTrue(doctorQueue("83849829", date,

我有一个方法:
doctorQueue
,它获取三个参数:数据类型(按java.util.Date)、时间和ID(字符串)

返回值为
void
,如果同时已经有队列,则给出一个exeption

我使用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
}
它给了我下一个问题:
类型Assert中的方法assertTrue(boolean)不适用于参数(void)


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

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

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

我如何检查函数,它返回的值是否为空

你不能。您只能检查它是否在本应引发异常(如错误参数等)时引发异常,并通过
Assert.fail()

您可以创建一个包装器方法来检查此方法的副作用,并返回
true
false
,然后从assert调用它

我如何检查函数,它返回的值是否为空

你不能。您只能检查它是否在本应引发异常(如错误参数等)时引发异常,并通过
Assert.fail()


您可以创建一个包装器方法来检查此方法的副作用,并返回
true
false
并从assert调用它。如果您想测试void方法是否引发异常,一个常见模式是:

try {
  doctorQueue("83849829", date, time);
  // if we make it to this line, success!
} catch (Exception e) {
  fail("queue adding threw an exception");
}
如果您在另一种情况下希望检查该方法是否引发异常,只需将fail调用移动到另一个块:

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!
}

(顺便说一句,在这两种情况下,捕获一个更具体的异常可能比只捕获
异常要好。)

如果要测试异常不是由void方法引发的,常见的模式是:

try {
  doctorQueue("83849829", date, time);
  // if we make it to this line, success!
} catch (Exception e) {
  fail("queue adding threw an exception");
}
如果您在另一种情况下希望检查该方法是否引发异常,只需将fail调用移动到另一个块:

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!
}
(顺便说一句,在这两种情况下,捕获更具体的异常可能比只捕获
异常
要好。)

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


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

如果使用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);
}

如果您使用的是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);
}

如果要测试异常不是由方法引发的,只需调用该方法即可。通过调用该方法尝试。。。catch,您正在隐藏原始异常如果要测试异常不是由方法引发的,只需调用该方法即可。通过调用该方法尝试。。。注意,您正在隐藏原始异常我认为问题在于如何测试是否未引发异常。我相信你的测试异常的例子对于海报想要测试的其他场景很有用,但我认为问题是如何测试是否没有抛出异常。我相信您测试异常的示例对于海报想要测试的其他场景很有用