来源:蜘蛛抓取(WebSpider)
时间:2018-06-13 02:56
标签:
ieda 快捷键
提供企业信息化整体解决方案
Juint自动化测试之数据与代码分离测试方法
Juint自动化测试之数据与代码分离测试方法
| 作者: |
10:14:42| 阅读 0次
概述:自动化测试中,测试代码冗余和测试代码与数据分离的问题一直是测试人员讨论的话题。小编整理了现在测试人员应用Junit应对这两个问题的办法。
自动化测试中,测试人员一直讨论如何在特定的正常条件和异常条件下运行系统,检查系统漏洞。通常情况下,大量不同的输入,但处理逻辑的业务不变,对其结果进行验证也会有不同的期望值。这样也产生了大量了冗余代码。
目前测试人员都通过自己的工具和技术一定程度解决了测试代码与数据分离及测试代码冗余的问题,下面介绍junit工具自动测试方法
Junit(文章中Junit都是指的Junit4)给出了参数化的特性,从而实现了不同的输入对应相同的代码。
测试方法:
public class UserAccess
// simple validation for user name and password
public static boolean accessCheck(String userName, String password)
if (userName.length() &= 4 || userName.length() & 8 )
if (password.length() &= 4 || password.length() & 8 )
if (userName.contains(&@& ))
if (password.contains(&*& ))
使用Junit参数化,减少代码冗余:
import java.util.A
import java.util.C
import org.junit.T
import org.junit.runner.RunW
import org.junit.runners.P
import org.junit.runners.Parameterized.P
import static org.junit.Assert.assertE
import sample.junit.code.UserA
* JUnit - Parameter test sample
@RunWith(Parameterized.class)
public class JunitSample
private S
private S
@Parameters
public static Collection dataGenerate()
return Arrays.asList( new Object[][]
{ &user01&,&123456& ,true},
{ &user02&,&123456& ,true},
{ &user03&,&& ,true}
public JunitSample(String user,String pwd,boolean expected)
this.user =
this.pwd =
this.expected =
public void testAccessCheck(){
assertEquals(expected,UserAccess. accessCheck(user, pwd));
运行结果:
数据与代码的分离(Feed4Junit):
import static org.junit.Assert.assertE
import org.databene.benerator.anno.S
import org.databene.feed4junit.F
import org.junit.T
import org.junit.runner.RunW
import sample.junit.code.*;
@RunWith (Feeder.class )
public class Feed4junitSample
@Source( &Data.csv& )//CSV source
public void testAccessCheck_CSV(String userName, String pw, boolean expected)
assertEquals(expected, UserAccess. accessCheck(userName, pw));
@Source( &data.xls& )//Excel source
public void testAccessCheck_Excel(String userName, String pw, boolean expected)
assertEquals(expected, UserAccess. accessCheck(userName, pw));
运行结果如下:
最后通过通过&url,driver&等信息建立数据连接,数据库作为数据源。实现Junit自动化测试的数据与代码分离测试方法。
慧都控件|提供软件技术整体解决方案
云集全球三千余款优秀控件、软件产品,提供行业领先的咨询、培训与开发服务
企业QQ:|电话:023-
服务与支持
重庆 / 023-
北京 / 010-
400-700-1020
慧都科技有限公司 版权所有 Copyright 2003-
400-700-1020
<input type="hidden" id="url" value=""/>juint4热门博客列表 -
ITeye博客频道 - ITeye.com
博客专栏推荐
本月博客排行
年度博客排行
最新文章列表
jdk必需在1.5及以上
首先写一个EJB3.0的项目肯定有2个部分组成(下面是用eclipse+jboss-4.2.3.GA说明):
1. EJB的组件(封装了业务逻辑的组件)
2. 客户端(注意:客户端可以说Java程序,也可以说Web程序,或是WebService)
第一步在jboss服务器上配置数据源
我采用的oracle11g数据库
我采用是默认服 ...
博客人气排行榜
博客电子书下载排行关注51Testing
Android单元测试的利器:Juint(二):Juint的生命周期
发表于: 15:24 &作者:珠穆朗玛小王子 & 来源:51Testing软件测试网采编
推荐标签:
前言 上个星期总算是忙起来了,于是博客就休息了一个星期,这次我们接着聊Juint,看看他更多的用法。 再次强调:这是基于Juint 4.0 以上版本,跟之前的版本的用法还是有差别的。 正文 首先我们回顾一下上次的简单的demo: public class TimeUtilTest { /** * 运行的方法,注意需要使用@Test注解 */ @Test public void timeFormat_isCorrect() throws Exception { long time = 0L; //预期的结果 String result = " 15:36:53"; // TimeUtil是编写的Java工具类 assertEquals(result, TimeUtil.formateTime(time)); } } 在Juint中,所有需要运行的测试都需要使用@test注解,否则这个方法是不会被运行的。 可以说Juint的大部分功能都是通过注解使用的,根据功能我把注解分为两类: 1、生命周期注解 2、功能类注解 生命周期注解 生命周期注解,就是从我们开始运行一个到运行结束期间会触发的方法,跟Activity类似,他也是有固定的生命周期的。 生命周期注解主要有: 1、@BeforeClass 必须是static方法,被注解的方法将会测试最开始的时候调用 2、@Before 被注解的方法会在每一次调用@test之前调用 3、@Test 要运行的测试方法 4、@After 被注解的方法会在每一次调用@test之后调用 5、@AfterClass 必须是static方法,被注解的方法将会测试结束的时候调用 下面是一段测试代码: public class LifeCycleTest { @BeforeClass public static void beforeClass(){ System.out.println("beforeClass"); } @Before public void before(){ System.out.println("before"); } @Test public void testOne(){ System.out.println("test One"); } @Test public void testTwo(){ System.out.println("test Two"); } @After public void after(){ System.out.println("after"); } @AfterClass public static void afterClass(){ System.out.println("afterClass"); } } 代码里注解了两个测试方法testOne和testTwo,现在我们运行一下: 这里写图片描述 从打印上看到,整个测试流程从@BeforeClass开始,中间运行了testOne,然后运行了testTwo,而每一次运行测试方法时,也运行了@Before和@After方法,最终到@AfterClass结束。 分别看一下testOne和testTwo的打印: 这里写图片描述 这里写图片描述 从上面两张图可以更加直观的看到@Before和@After的确在每一个测试方法前后都运行了,并且属于这个测试方法的整个运行周期。 我们画一个简单的流程图: 这里写图片描述 有了对Juint的生命周期的了解,我们就可以更加准确合理的使用每一个测试对象: 类似于Activity的OnCreate和OnDestroy @BeforeClass 适合在测试开始时,加载必要的资源。 @AfterClass 在测试结束时,释放之前加载的资源。 @Before 初始化每一个测试方法的全局变量 @After 测试结束后,进行一些打印和全局变量的重置 很遗憾,我们无法知道正在运行的是哪个测试方法,所以也就无法让@Before和@After为每一个测试方法做一些专门的准备。因为@Before和@After是为了全局而存在的,也是为了把每一个测试方法都独立开,对于这种设计我们也是应该可以理解的。 总结 这一篇我们已经弄明白了Juint运行的主要生命周期,也是我们编写本地测试最常用的知识,到此为止,对于一般般的测试,我们已经能轻松搞定了。相关:的利器:Juint的介绍和基础使用
搜索风云榜
51Testing官方微信
51Testing官方微博
测试知识全知道您所在位置: &
 &  & 
JUint单元测试工具.ppt 35页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
计算机工程系 8.3 测试的内容
2、边界条件
Conformance
(一致性)—— 值是否和预期的一致。 Ordering (顺序性)—— 值是否如应该的那样,是有序或者无序的。 Range (区间性)—— 值是否位于合理的最小值和最大值之内。 Reference (依赖性)—— 代码是否引用了一些不在代码范围之内的外部资源。 Existence (存在性)—— 值是否存在(例如,是否非 null,非0,在一个集合中等等)。 Cardinatity (基数性)—— 是否恰好有足够的值。 Time (相对或者绝对的时间性)—— 所有事情的发生是否是有序的?是否是在正确的时刻?是否恰好及时? * 计算机工程系 8.3 测试的内容
3、检查反向关联
对于一些方法可以使用反向的逻辑关系来验证它们
为了检查某条记录是否成功地插入了数据库,也可以通过查询这条记录来验证
注意:当同时编写了原方法和它的反向测试时,一些 bug 可能会被两个函数中都出现的错误所掩盖。在可能的情况下,应该使用不同的原理来编写反向测试。 * 计算机工程系 8.3 测试的内容
4、其他手段来实现交叉检查
计算一个量会有一种以上的算法,可使用剩下算法中的一个来交叉测试结果 可以充分利用一些比较弱的版本来检查新写的超级漂亮的版本,看它们是否产生了相同的结果
使用类本身不同组成部分的数据,并且确信它们能“合起来” * 计算机工程系 8.3 测试的内容
5、强制产生错误条件
应当能够通过强制引发错误,来测试自己的代码是如何处理所有这些真实世界中的问题的。
内存耗光。 磁盘用满。 时钟出问题。 网络不可用或者有问题。 系统过载。 调色板颜色数目有限。 显示分辨率过高或者过低。 * Q & A
P196:1、2
复习提纲:
* 计算机工程系 计算机工程系 * * SWPU BITC SWPU 第8章
JUnit测试工具简介 主讲:史宝会 北京信息职业技术学院
计算机工程系 * 计算机工程系 计算机工程系 JUnit概述
1 使用JUnit编写测试 2 测试的内容
3 主要内容 * 计算机工程系 8.1 JUnit概述 JUnit是一个开源的java测试框架,它是Xuint测试体系架构的一种实现。 JUnit最初由Erich Gamma 和 Kent Beck所开发。 在JUnit单元测试框架的设计时,设定了三个总体目标,第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则是可以利用既有的测试来编写相关的测试。
* 计算机工程系 8.2 使用JUnit编写测试
1、构建单元测试
测试代码必须要做的事情: ● 准备测试所需要的各种条件(创建所有必须的对象,分配必要的资源等) ● 调用要测试的方法 ● 验证被测试方法的行为和期望是否一致 ● 完成后清理各种资源 (Internal Only)
(Delivered) * 计算机工程系 8.2 使用JUnit编写测试
1、构建单元测试
测试代码用一般的方式编写和编译
当执行测试代码的时,从来不直接运用产品代码 * 计算机工程系 8.2 使用JUnit编写测试
2、JUnit的各种断言
JUnit提供了一些辅助函数,用于帮助确定某个被测试函数是否工作正常。通常把所有这些函数统称为断言。
每一个断言(assert)方法都会记录是否失败了(断言为假)或有错误了(遇到一个意料外的异常)的情况,并通过JUnit的一些类来报告这些结果 当一个失败或者错误出现的时候,当前测试方法的执行流程将会被中止,但是(位于同一个测试类中的)其它测试将会继续运行。
* 计算机工程系 8.2 使用JUnit编写测试
2、JUnit的各种断言
assertEquals
assertEquals( [Sting message], expected, actual )
相等性测试
expected是期望值(通常都是硬编码的),actual是被测试代码实际产生的值,message是一个可选的消息,如果提供的话,将会在发生错误时报告这个消息。
如想用断言来比较浮点数(在Java中是类型为float或者double的数),则需指定一个额外的误差参数。
assertEquals([Sting message], expected, actual, tolerance)
* 计算机工程系 8.2 使用JUnit编写测试
2、JUnit的各种断言
assertNull
assertNull([Sting message],java.lan
正在加载中,请稍后...