众所周知,在一个大型的软件项目中,测试是必不可少的。传统的测试方法往往要自己编写测试函数再结合测试用例进行验证,这样会显得比较繁琐。所以我们可以使用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. [SinGuLaRiTy] NOIP 膜你赛-Day 2

    [SinGuLaRiTy-1031] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 对于所有题目: Time Limit: 1s | Mem ...

  2. Java—多线程实现PV效果

    前言 还记得今年参加自学操作系统考试,最难分析的就是PV这部分,然而伟大的米老师却用一个放东西吃东西的小例子,把PV讲的栩栩如生,言简意赅.学J2SE时学到了线程部分,里面提到了线程同步,死锁问题等等 ...

  3. 树状数组 二维偏序【洛谷P3431】 [POI2005]AUT-The Bus

    P3431 [POI2005]AUT-The Bus Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 ...

  4. 2017第八届蓝桥杯决赛(C++ B组)2.磁砖样式

    磁砖样式 小明家的一面装饰墙原来是 310 的小方格. 现在手头有一批刚好能盖住2个小方格的长方形瓷砖. 瓷砖只有两种颜色:黄色和橙色. 小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来. ...

  5. umask码和文件权限

    umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1 ...

  6. opencv第二课,使用cmake编译OpenCV,并添加opencv_contrib模块

    一.下载安装cmake 想要在Windows平台下生成OpenCV的解决方案,我们需要一个名为cmake的开源软件,可以在camke的官网:http://www.cmake.org/上下载到 或者点击 ...

  7. uwsgi01---uwsgi文件

    1. 安装 pip install uwsgi //测试uWSGI是否安装成功 在终端中输入以下命令查看uwsgi的版本:uwsgi --version 2.简单运行 运行uwsgi:uwsgi -- ...

  8. CentOS7l联网

    原文:https://blog.csdn.net/nothing2017/article/details/61420767 步骤: 1.以root管理员身份登录系统,输入   --->(ls / ...

  9. clojure with postgres

    主要关注访问pg.不关心其他db 1 clojure.java.jdbc https://github.com/clojure/java.jdbc http://clojure-doc.org/art ...

  10. 用C#写一个函数,在一个数组中找出随意几个值相加等于一个值 与迭代器对比

    算法!用C#写一个函数,在一个数组中找出随意几个值相加等于一个值比如,数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}  要找出那些数相加等 ...