众所周知,在一个大型的软件项目中,测试是必不可少的。传统的测试方法往往要自己编写测试函数再结合测试用例进行验证,这样会显得比较繁琐。所以我们可以使用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. 转载Json和Xml的区别,以及它们的底层是如何处理的

    XML:可扩展标记语言       JSON:轻量级的数据交换格式 区别: 1.可读性方面:基本相同,Xml的可读性较好些: 2.可扩展性方面:都有较好的扩展性: 3.编码难度方面:json的编码较容 ...

  2. 洛谷P5206 [WC2019] 数树(生成函数+容斥+矩阵树)

    题面 传送门 前置芝士 矩阵树,基本容斥原理,生成函数,多项式\(\exp\) 题解 我也想哭了--orz rqy,orz shadowice 我们设\(T1,T2\)为两棵树,并定义一个权值函数\( ...

  3. 洛谷P3604 美好的每一天(莫队)

    传送门 由乃的题还是一如既往的可怕…… 先放上原题解 标解: 一个区间可以重排成为回文串,即区间中最多有一个字母出现奇数次,其他的都出现偶数次 发现这个和  类似 这样如果一个区间的  和为  或者  ...

  4. Q的进阶用法

    Q的实例化用法 #q1 里面的条件都是or的关系 q1=Q() q1.connector = 'OR' q1.children.append(('id',1)) q1.children.append( ...

  5. vue_cli下开发一个简单的模块权限系统之实现登录

    因为我们需要和后端数据交互,所以我们需要安装axios,安装好以后在main.js引入 v-model是标识空间,v-on:click="doLogin"是登录事件 doLogin ...

  6. Qt 学习之路 2(21):事件过滤器

    Qt 学习之路 2(21):事件过滤器 豆子 2012年10月15日 Qt 学习之路 2 37条评论 有时候,对象需要查看.甚至要拦截发送到另外对象的事件.例如,对话框可能想要拦截按键事件,不让别的组 ...

  7. appium键盘处理

    最近对appium感兴趣,就从网上找了些资料,搭建了环境,下载了appium测试代码和测试apk,这方面的东西晚上再写 appium最新版(v1.4.0.0)已经没有sendKeyEvent了,所以现 ...

  8. KindEditor的参考文献

    转自:http://www.cnblogs.com/wupeiqi/articles/6307554.html

  9. Vue 父页面 值传递 不到 子组件....

    ...各种百度无果..最后发现 这两个值 都是绑定的一个 ajax....... 坑爹啊..所以注意了....以后的写法.... 比如 data:{ data1: data2: } 假如 data1 ...

  10. django导入 views.py

    网上找了各种教程..均无解....自己摸索出来了..分享 给大家... 首先INSTALLED_APP 加入 自己的 app pili,然后如下图 from App名称 import views 就 ...