Junit 何时在vert.x中使用TestContext#verify()方法
我正在为vert.x示例应用程序进行单元测试。但无法理解Junit 何时在vert.x中使用TestContext#verify()方法,junit,vert.x,Junit,Vert.x,我正在为vert.x示例应用程序进行单元测试。但无法理解TestContext#verify()方法的用途。这里有两个测试用例,一个带有TestContext#verify(),另一个没有它。两者都运转良好。那么我们什么时候需要使用TestContext#verify() 不带TestContext的测试用例#verify(): 使用TestContext\verify()测试用例 试验方法: public void doWorkWithAsyncresult(String input, Han
TestContext#verify()
方法的用途。这里有两个测试用例,一个带有TestContext#verify()
,另一个没有它。两者都运转良好。那么我们什么时候需要使用TestContext#verify()
不带TestContext的测试用例#verify():
使用TestContext\verify()测试用例
试验方法:
public void doWorkWithAsyncresult(String input, Handler<AsyncResult<String>> handler) {
handler.handle(Future.succeededFuture("test from"));
}
public void doWorkWithAsyncresult(字符串输入,处理程序){
handler.handle(Future.succeededFuture(“测试来源”));
}
谢谢,
Vivek Kumar当测试失败时,而不是通过测试时,验证
方法很有用
如果其中一个异步断言失败,verify
会将其正确报告给TestContext
。然后,测试将立即失败,并显示正确的错误消息
否则,测试将在任意时间后超时,错误可能会打印到控制台,也可能不会打印到控制台。当测试失败时,而不是通过测试时,验证方法非常有用
如果其中一个异步断言失败,verify
会将其正确报告给TestContext
。然后,测试将立即失败,并显示正确的错误消息
否则,测试将在任意时间后超时,错误可能会也可能不会打印到控制台。您的代码不是异步的。所以现在两种方法都是一样的。而testContext.completeNow()
什么也不做
当代码为异步时,应将其添加到测试的底部(VertxExtension
为您执行此操作):
如果assert
抛出异常,则不带verify
的测试将以超时结束
要解决此问题,您应该包装您的assert
并调用failNow
:
try {
assert...
testContext.completeNow();
} catch (Exception e) {
textContext.failNow(e);
return;
}
TextContext::验证
是否为您执行此包装。您的代码不是异步的。所以现在两种方法都是一样的。而testContext.completeNow()
什么也不做
当代码为异步时,应将其添加到测试的底部(VertxExtension
为您执行此操作):
如果assert
抛出异常,则不带verify
的测试将以超时结束
要解决此问题,您应该包装您的assert
并调用failNow
:
try {
assert...
testContext.completeNow();
} catch (Exception e) {
textContext.failNow(e);
return;
}
TextContext::验证
是否为您完成此包装
assertTrue(testContext.awaitCompletion(10, TimeUnit.SECONDS), "Timeout");
assertFalse(testContext.failed());
try {
assert...
testContext.completeNow();
} catch (Exception e) {
textContext.failNow(e);
return;
}