java 运行单元测试_java-使用Mockito运行的单元测试

将模拟处理程序传递给TestClass的构造函数.

然后使用Mockito.verify()声明调用了callHandler()方法.

涉及并发

您可以在CountDownLatch上倒数一个答案,以使测试等待处理程序被击中.等待将涉及设置合理的超时时间,这可能很棘手,您不希望它太高,否则失败会使测试运行更长的时间,而又不会太低,因此您不会得到误报.

Handler handler = mock(Handler.class);

CountDownLatch finished = new CountDownLatch(1);

doAnswer(invocation -> {

finished.countDown();

return null;

}).when(handler).callHandler();

TestClass testClass = new TestClass(executor, handler);

testClass.doSomething("thisThing");

boolean ended = finished.await(10, TimeUnit.SECONDS);

assertThat(ended).isTrue();

verify(handler).callHandler();

绕过并发

如果仅尝试确定是否调用了处理程序,则可以使用在同一线程上执行的Executor.这将使测试更加稳定.

Handler handler = mock(Handler.class);

Executor executor = new Executor() {

@Override

public void execute(Runnable command) {

command.run();

}

};

TestClass testClass = new TestClass(executor, handler);

testClass.doSomething("thisThing");

verify(handler).callHandler();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值