博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Storm实时数据处理》一1.8 对Bolt进行单元测试
阅读量:6006 次
发布时间:2019-06-20

本文共 1017 字,大约阅读时间需要 3 分钟。

本节书摘来华章计算机《Storm实时数据处理》一书中的第1章 ,第1.8节,(澳)Quinton Anderson 著 卢誉声 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.8 对Bolt进行单元测试

对于任何产品交付来说,单元测试都是其重要组成部分,我们也必须对Bolt中实现的逻辑进行单元测试。

1.8.1 准备工作

单元测试中有一种很常用的技术叫做Mock,它允许你动态生成依赖对象的假实例,这样才能保证对一个特定类进行准确的单元测试。本书通过JUnit 4和JMock来演示单元测试。请花些时间阅读JMock使用方法,网址是 。

1.8.2 实战

Step01 在src/test/java目录下创建storm.cookbook包,然后创建StormTestCase类。该类是一些初始化代码的抽象类:

image

Step02 创建TestRepeatVisitBolt类,并继承StormTestCase,然后使用参数化执行器注解来标记它:

image

Step03 execute方法中涵盖了类的测试用例逻辑:

image

Step04 接下来,我们还需要定义一些参数:

image

Step05 在使用Redis进行测试之前,必须初始化一些基本配置的值:

image

保留测试完成后栈中的数据总是有用的,这样便于复查和调试逻辑。我们只要在下一次测试执行时清理栈中的数据就好了。

1.8.3 解析

首先,单元测试是由一组测试数据驱动的测试。这就是说我们能在测试不同用例的时候免去许多无谓和重复的操作。在测试运行之前会将静态数据写入Redis 数据库中,保证了测试的正确运行。接着测试程序就会一行一行地执行参数化的测试数据,并验证许多不同的用例。

JMock负责Mock收集器及Bolt发送的Tuple。然后通过Mock的对象与对象之间的交互来定义我们预期执行的操作:
image

我们应该把Expectations对象内的代码当做描述性的语言来理解。比如方法体第一行的意思就是:希望Tuple的getStringByField方法被精确地调用一次(必须只被调用一次),而且必定会返回一个值给被测试的对象。

这种机制能够让我们准确地测试Bolt。
还有很多种不同的单元测试方法,我们通常会利用数据库来实现测试。除非万不得已,还是建议Mock所有类的依赖项,这样才能实现真正意义上的单元测试。对于“地理位置信息Bolt”的resolver抽象结构来说,我们完全可以Mock所有成员。

转载地址:http://ocvmx.baihongyu.com/

你可能感兴趣的文章
Python学习第二天-编写购物车
查看>>
BigTable——针对结构型数据的一种分布式存储系统
查看>>
python调用c/c++写的dll
查看>>
r语言ggplot2误差棒图快速指南
查看>>
python之处理异常
查看>>
遍历form表单里面的表单元素,取其value
查看>>
面试110道题
查看>>
python 08 文件操作
查看>>
强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1
查看>>
Gradle 配置debug和release工程目录
查看>>
curl指令的使用
查看>>
LNAMP第二版(nginx 1.2.0+apache 2.4.2+php 5.4)
查看>>
MongoDB repl set权限认证配置步骤
查看>>
java学习笔记(1)
查看>>
禁止Mysql默认端口访问Internet - MySQL - IT技术网
查看>>
基于用户投票的排名算法(二):Reddit
查看>>
下午最后的草坪
查看>>
Maven学习总结(七)——eclipse中使用Maven创建Web项目
查看>>
1.部分(苹果)移动端的cookie不支持中文字符,2.从json字符串变为json对象时,只支持对象数组...
查看>>
HDU3257 Hello World!【打印图案+位运算】
查看>>