TIP:
这部分相应的代码在step-2文件夹中(https://github.com/vert-x3/vertx-guide-for-java-devs)
在这之前,我们发布我们的wiki应用没有测试,这可不是一个好的实践,现在我们看看如何编写测试Vert.x的代码。
Getting started
vertx-unit模块提供了工具集测试异步操作,你可以选择其中一种测试框架比如JUnit
使用JUnit,我么需要加入下面的依赖:
使用JUnit测试的时候需要加入VertxUnitRunner注解来使用vertx-unit特性:
使用这一个runner,JUnit 测试方法的生命周期中接受一个TestContext,这个对象提供访问基础assertions,store data和async-oriented helpers(我们将在本章提及)。
为了说明这点,让我们考虑一个异步的情况下,我们要检查一个定时器任务被调用一次,这一周期中的任务已经调用了3次。因为代码执行是异步的,测试完成前测试方法已经存在,所以在测试通过或者失败需要通过异步的结果:
1.TestContext是runner提供的一个参数。
2.因为我们用单元测试,所以需要一个Vert.x context。
3.TestContext assertion 一个基本的例子。
4.Async对象用来获取异步的成功或者失败。
5.Async使用countdown锁,当被调用三次后执行。
6.当timer fires 完成。
7.每个周期任务在触发一个倒计时,当所有Async完成测试通过。
8.这里有一个默认的超时时间,可以通过@Test注解重写。
测试数据库操作
数据库service很适合用来写测试用例。
我们先部署database verticle,我们配置JDBC连接内存数据库HSQLDB ,成功后我们会拿我们的测试用例服务代理。因为这些操作交织一起,我们利用JUnit的before / after生命周期的方法:
1.我们将重写verticle的配置,其他的使用默认值。
2.asyncAssertSuccess很有效的用来测试异步结果是否正确,这个变量没有什么参数,用来连接其他handler。
清除Vert.x context是简单的,我们可以用asyncAssertSuccess确定没有error发生:
service操作重要的是CURD操作,JUnit测试集成了所有的这种测试方法:
1.这是Async最后执行的地方。
2.这是一种可选的方案退出测试用例,依赖于JUnit的超时机制,测试线程等Async完成或者超时。
原文链接:http://vertx.io/docs/guide-for-java-devs/
我的微信公众号: