软件测试技术第一次试验之——JUnit的安装与使用
众所周知,在一个大型的软件项目中,测试是必不可少的。传统的测试方法往往要自己编写测试函数再结合测试用例进行验证,这样会显得比较繁琐。所以我们可以使用JUnit框架进行测试。
使用junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。
下图为传统测试方法与JUnit测试方法的代码量对比。
接下来就是安装JUnit了
前提条件:电脑已安装eclipse,已配置java环境。
步骤一:下载JUnit与Hamcrest对应的jar包(注:Hamcrest是JUnit底层的匹配工具)
必须文件如图所示:
接下来将这些文件导入对应项目中。(注:为了项目的可迁移性这里暂时不添加到全局变量。)
在Eclipse中新建项目 (File - new - javaproject)
建完项目之后右键点击项目,选择Build Path - Configure Build Path
然后点击Libraries - Add External JARs,选择你刚才下载的三个jar包,点击打开。
导入完成如图所示
查看左侧项目中应该多出来这三个jar包,至此JUnit项目环境已配置完成。
步骤二:安装测试覆盖率工具 Eclemma
在Eclipse上方菜单栏中点击Help,选择Eclipse Marketplace,在搜索栏中输入Eclemma,搜索出来后点击Install安装即可。
如果Eclipse上方导航栏出现这样一个小标记说明安装成功:
至此,环境配置已全部完成,下面来编辑一个小程序来测试一下Junit。
步骤三:程序测试
从最简单的测试加法减法开始,便于新手理解。
在项目下src文件夹下新建一个包(package),这里我命名为cn.tjuscs.st,大家可以自行命名。
在项目下新建类(class),我命名为MyTest,大家可以自行命名。
下面为代码:
package cn.tjuscs.st; public class MyTest { private int result; public void add(int a, int b)
{
result = a + b;
} public void substract(int a, int b)
{
result = a - b;
} public int getresult()
{
return result;
} }
很简单的加法与减法函数,相信大家都可以看得懂。
然后右键点击MyTest.java,选择new-JUnit Test Case,点击next选择函数add和substract后点击finish。这里不选择也可以,后续自行编辑。
然后eclipse会生成一个MyTestTest.java的类,表示这个是测试类。
下面是编辑后MyTestTest.java的代码:
package cn.tjuscs.st; import static org.junit.Assert.*; import org.junit.Test;
import org.junit.Ignore; public class MyTestTest { MyTest t=new MyTest(); @Test
public void testAdd() {
t.add(1,4);
assertEquals(5, t.getresult());
} @Test
public void testSubstract() {
t.substract(9,4);
assertEquals(5, t.getresult());
} }
代码解释:@Test告诉JUnit接下来进行测试,assertEquals(期望值,测试用例);是JUnit自带的函数用来检测是否与预期相符。
因为1+4=5,9-4=5,这里两个测试都没有出问题,所以运行结果应该是一片绿色。
运行方法:在这个文件下点击右键-run as-junit test
运行结果:
现在修改一下程序,把程序中的9换成6,按ctrl+s保存完再运行一下。
这里就可以看到testSubstract这个函数出错了,和预期不符。
再来试一下覆盖率测试工具eclemma:
点击刚才装完eclemma生成的小图标旁边的小箭头,选择MyTestTest,这里可以看到结果如下:
红色代表未执行,黄色代表条件没有全部执行(通常适用于if语句等),绿色代表执行过了。
如果这几次运行结果和图中相符,那么说明之前的步骤都没有问题了,接下来进行编写一个简单的三角形的测试程序。
很简单的代码,只是为了了解一下junit的使用方法,所以就不添加其他检测与判断,这里就不再赘述了。
TestTriangle.java:
package cn.tjuscs.st; public class TestTriangle { public int getkind(int a, int b, int c)
{
int kind = 0;
if (a+b<=c || a+c<=b || b+c<=a || a<=0 || b<=0 || c<=0)
kind = -1; //-1代表三角形不成立
else if (a==b && b==c)
kind = 1; //1代表等边三角形
else if ((a==b && a!=c) || (a==c && a!=b) || (b==c && b!=a))
kind = 2; //2代表等腰三角形
else if (a!=b && b!=c)
kind = 3; //3代表普通三角形 return kind;
} }
TestTriangleTest.java:
package cn.tjuscs.st; import static org.junit.Assert.*; import org.junit.Test; public class TestTriangleTest { TestTriangle t = new TestTriangle(); @Test
public void test_not_a_triangle() {
assertEquals(-1,t.getkind(1,2,3));
}
@Test
public void test_equilateral() {
assertEquals(1,t.getkind(2,2,2));
}
@Test
public void test_isosceles() {
assertEquals(2,t.getkind(2,2,3));
}
@Test
public void test_scalene() {
assertEquals(3,t.getkind(2,3,4));
} }
运行结果:
这里四个函数全部运行正确,符合预期。
总结:作为软件开发人员,在大型项目中测试往往是一项工作量相当大的事情。如何正确地利用工具提高效率是作为一个程序员所必须知道的。JUnit就是一个相当好的工具,虽然成不了巨人,但是我们应该站在巨人的肩膀上看的更远。
软件测试技术第一次试验之——JUnit的安装与使用的更多相关文章
- 软件测试学习日志———— round 2 Junit+intellj idea 安装及简单的测试使用
今天是软件测试的上机,主要内容是对junit的安装以及对一个简单类的测试实践.老师推荐用eclipse,但是我原来一直在 用intellj Idea,所以我试了试intellj Idea对junit的 ...
- 软件测试技术lab2——Selenium上机实验
Selenium上机实验说明 1.安装SeleniumIDE插件 2.学会使用SeleniumIDE录制脚本和导出脚本 3.访问http://121.193.130.195:8080/使用学号登录系统 ...
- junit的安装和使用
一.junit的安装: junit-4.11.jar: http://www.java2s.com/Code/Jar/j/Downloadjunit411jar.htm hamcrest-core.j ...
- 2019-2020-2 20175121杨波《网络对抗技术》第一周kali的安装
2019-2020-2 20175121杨波<网络对抗技术>第一周kali的安装 标签 : Linux 一.下载安装kali 1.下载kali 下载链接 打开链接进入官网后,点击Torre ...
- 软件测试第一次试验JUnit
一.Junit, hamcrest以及eclemma的安装 对于Junit和hamcrest的安装,我并没有从下载Junit和hamcrest相关的jar包然后通过build path导入到项目中,而 ...
- Java技术学习路线笔记:Maven安装和作用
Maven是一个基于项目对象模型(POM)的概念的纯java开发的开源的项目管理工具.主要用来管理java项目,进行依赖管理(jar包管理,能自动分析项目所需的依赖软件包,并到Maven仓库区下载)和 ...
- 基于ASP.Net Core学习Docker技术第一步:在CentOS7安装Docker平台
Docker技术几年前就火了,伴随着今年来devops的流行,这项技术一直被技术社区追捧.提起Docker很容易被默认为是Linux平台下的技术,.NET的技术跟他似乎没有沾边,不过那是对非.NET ...
- 高级软件测试技术(测试管理工具实践day3)
昨天在晚上由于安装bugzilla中有一些小问题,并且需要手工安装很多perl模块 ppm install XXX(模块名称).一直到过了十二点就没有继续更博了.所以由今天更. 继昨天的安装问题之后 ...
- 软件测试技术---Web应用软件测试
从测试的角度看,Web应用软件的以下特点会导致Web应用软件的测试有别于其他软件的测试 1.基于无连接协议 2.内容驱动 3.开发周期短 4.演化频繁 5.安全性要求较高 6.美观性要求较高 Web应 ...
随机推荐
- MPI编程指南
MPI编程指南 一. MPI概述 1.1 MPI的发展史 MPI标准化涉及到大约60个国家的人们,他们主要来自于美国和欧洲的40个组织,这包括并行计算机的多数主要生产商,还有来自大学.政府实 ...
- 亿级PV请求的三种负载均衡技术(转)
http://www.360doc.com/content/17/1126/23/50145453_707419125.shtml 目录 DNS轮询 LVS负载均衡 DR模式 NAT模式 ...
- ios swift UITextView高度自适应
在ios开发中,用到多行输入时一般都会用到UITextView.常见的比如说聊天输入框,评论输入框等,当用户输入多内容时,我们希望高度能根据用户输入的内容扩大而扩大.其实实现这个功能也不是很难,只需要 ...
- 老男孩Day4作业:员工信息查询系统
1.作业需求: (1).工信息表程序,实现增删改查操作: (2).可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where ...
- 明明有印象却找不到,APP内搜索为什么这么难用?
赶上了互联网浪潮的当代人,每当有任何困扰,第一反应都是打开搜索引擎. 什么叫做“硬核相亲”,什么是“pick一下”,“达达主义”,“隐形贫困人口”——你都默默搜索过,不想被时代与话题抛弃.也许只有这样 ...
- MVC与三层的区别
闲来无事,想了想MVC与三层的区别,根据自己的经验,上图 由此来看,其实这两种框架(结构)的分层方式其实没什么联系,也没有什么可比性,但他们的目的都一样的:解耦 --Ones
- 小程序获取unionId以及手机号
1.前端小程序传入后端接口的入参如下: code :临时登录凭证(必传)encryptedData:密文iv:偏移量 2.接收到入参后的java后端接口中的代码如下: @Action(value = ...
- grep常用选项记录
grep: 一.常用选项: -i 不区分大小写针对单个字符 -v 显示不包括查找字符的所有行 -o 只打印出匹配到的字符 -c 显示有多少行被匹配到 -e 可以使用多个表 ...
- 标签li设为display inline-block后间距问题
在对导航栏做水平排列的时候,我们往往对li元素设为display:inline-block 目的是为了,让所有li元素并排在一起,但是遇到个问题,我们的标签之间会产生空白边距 如图所示: 这样看上去, ...
- app的deviceName,apppackage,appactivity获取
deviceName值的获取: deviceName=192.168.137.150:5555 ip:手机ip地址,端口,通过如下命令开启 # adb devices //查看当前连接设备 # adb ...