Junit 何时在vert.x中使用TestContext#verify()方法

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

我正在为vert.x示例应用程序进行单元测试。但无法理解
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;
}