众所周知,在一个大型的软件项目中,测试是必不可少的。传统的测试方法往往要自己编写测试函数再结合测试用例进行验证,这样会显得比较繁琐。所以我们可以使用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的安装与使用的更多相关文章

  1. 软件测试学习日志———— round 2 Junit+intellj idea 安装及简单的测试使用

    今天是软件测试的上机,主要内容是对junit的安装以及对一个简单类的测试实践.老师推荐用eclipse,但是我原来一直在 用intellj Idea,所以我试了试intellj Idea对junit的 ...

  2. 软件测试技术lab2——Selenium上机实验

    Selenium上机实验说明 1.安装SeleniumIDE插件 2.学会使用SeleniumIDE录制脚本和导出脚本 3.访问http://121.193.130.195:8080/使用学号登录系统 ...

  3. junit的安装和使用

    一.junit的安装: junit-4.11.jar: http://www.java2s.com/Code/Jar/j/Downloadjunit411jar.htm hamcrest-core.j ...

  4. 2019-2020-2 20175121杨波《网络对抗技术》第一周kali的安装

    2019-2020-2 20175121杨波<网络对抗技术>第一周kali的安装 标签 : Linux 一.下载安装kali 1.下载kali 下载链接 打开链接进入官网后,点击Torre ...

  5. 软件测试第一次试验JUnit

    一.Junit, hamcrest以及eclemma的安装 对于Junit和hamcrest的安装,我并没有从下载Junit和hamcrest相关的jar包然后通过build path导入到项目中,而 ...

  6. Java技术学习路线笔记:Maven安装和作用

    Maven是一个基于项目对象模型(POM)的概念的纯java开发的开源的项目管理工具.主要用来管理java项目,进行依赖管理(jar包管理,能自动分析项目所需的依赖软件包,并到Maven仓库区下载)和 ...

  7. 基于ASP.Net Core学习Docker技术第一步:在CentOS7安装Docker平台

    Docker技术几年前就火了,伴随着今年来devops的流行,这项技术一直被技术社区追捧.提起Docker很容易被默认为是Linux平台下的技术,.NET的技术跟他似乎没有沾边,不过那是对非.NET ...

  8. 高级软件测试技术(测试管理工具实践day3)

    昨天在晚上由于安装bugzilla中有一些小问题,并且需要手工安装很多perl模块  ppm install XXX(模块名称).一直到过了十二点就没有继续更博了.所以由今天更. 继昨天的安装问题之后 ...

  9. 软件测试技术---Web应用软件测试

    从测试的角度看,Web应用软件的以下特点会导致Web应用软件的测试有别于其他软件的测试 1.基于无连接协议 2.内容驱动 3.开发周期短 4.演化频繁 5.安全性要求较高 6.美观性要求较高 Web应 ...

随机推荐

  1. vue 用axios实现调用接口下载excel

    了解的方式有两种: 1. 用a标签,href设置为后端提供的excel接口 <a href="excel接口">导出</a> 简单方便,缺点就是当有toke ...

  2. echarts设置地图大小比例,大小设置

    设置地图大小可通过以下属性设置: geo.aspectScale number [ default: 0.75 ] 这个参数用于 scale 地图的长宽比. 最终的 aspect 的计算方式是:geo ...

  3. 【RMQ】【Sparse_Table算法】

    摘自网友,具体哪个忘记了,抱歉~ 定义: RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题: 对于长度为n的数列A,回答若干询问RMQ(A,i,j) ...

  4. 洛谷 P3586 [POI2015]LOG

    P3586 [POI2015]LOG 题目描述 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它 ...

  5. 10.Find All Anagrams in a String(在一个字符串中发现所有的目标串排列)

    Level:   Easy 题目描述: Given a string s and a non-empty string p, find all the start indices of p's ana ...

  6. mysql 配置utf8 编码,支持 emoji 方法!!!

    utf8_general_ci 已经 过时了...请以后用mysql 考虑使用 utf8mb4, utf8mb4_unicode_ci!!! 兼容性更好. mysql的utf8编码的一个字符最多3个字 ...

  7. DokanLibrary 卸载

    如果不小心安装了旧版...请卸载 在 c 盘中搜索  doken 其中有一个文件叫dokan.sys  它在C:\Windows\System32\drivers 文件夹中...放心删掉之.. 太坑了 ...

  8. freemarker 定义公共header

    <#--公共顶部--> <#macro header title="默认文字" keywords="默认文字" description=&qu ...

  9. Github如何快速添加add文件到暂存区之git add

    git add作用是将代码从工作区提交到暂存区 通常会想到:git add [file1] [file2]   : 这个方法添加文件比较慢,如果文件比较多怎么办? git add *.扩展名 这条命令 ...

  10. 使用Entity Framwork 保存数据时,提示不能在对象中插入重复键,违反了PRIMARY_KEY约束

    这种情况,大多发生在有外键存在的情况下,解决方法是: 把dataContext.Set<T>().Add(model)修改成dataContext.Models.Add(model);