在Eclipse中使用JUnit4进行单元测试(图文教程一)
在Eclipse中使用JUnit4进行单元测试
单元测试,JUnit4。
这两个有什么关系呢?这就好比(草)单元测试和(割草机)。用这个JUnit4工具去辅助我们进行测试。其实不理解这个也没关系,听多了见多了用多了,自然而然地就会懂了。
有人可能会想,那我直接自己编写个测试的方法不就可以了。例如写个System.out.print输出,看看是否与我们预期的相等。Bingo!这样也是可以的。但是你有割草机不用,那效果也是很Duang的。
开始我也觉得没有必要使用割草机(JUnit)的,但是我了解了割草机(JUnit)之后,我很喜欢那种唰唰唰(绿条)的感觉。
如果你还是一脸疑惑不知道什么是JUnit4,不知道单元测试,OK,Don‘t worry。Just Follow me.跟我一步一步来,先让你体验下唰唰唰的快感。
第一步:
打开eclipse.exe,创建一个名为“Ives”的工项目,创建一个名为”UnitTest”的类。写几个方法:两数+ - * /的方法和返回结果的方法。
代码如下:
import java.util.*;
public class Expression {
int a;
int b;
static int c;//用户答案
int answer;//答案
static Scanner in=new Scanner(System.in); public int Expression(){
a = new Random().nextInt()%10;
b = new Random().nextInt()%10;
System.out.print(""+a+"+"+b+"=");
return answer = a + b; }
public static void main(String[] args){
int answer;
Expression expression = new Expression();
answer = expression.Expression();
try{
Expression.c = in.nextInt();
}
catch(InputMismatchException e)
{ System.err.println("\nError ,please Enter a Int number");
}
if(answer==c)
{
System.out.print("答对了");
}
else System.out.print("答错了");
//System.out.print("answer="+answer);
}
}
第二步:
Duang!酷炫的效果来了,跟紧脚步了。
将JUnit4单元测试包引入这个项目:在该项目“Ives”上点右键,点“属性”(Properties),如图:
在弹出的属性窗口中,首先在左边选择“Java 构建路径”(Java Build Path),然后到右上选择"库(L)"(Libraries)标签,之后在最右边点击“添加库(A)”(Add Libraries)按钮,如下图所示:


点击完成,JUnit4软件包就被包含进我们这个项目了。
第三步:
生成JUnit测试框架:在Eclipse的包资源管理器(Package Explorer)中用右键点击该类”UnitTest“弹出菜单,选择 新建 →JUnit测试用例 (New à JUnit Test Case)。如下图所示:

在弹出的对话框中,进行相应的选择,如下图所示:


点击完成之后会出现如下图:

千万不要去删除@Test这个标志很重要的!!!!!然后把fail(“尚未实现”)删除,把自己的代码敲进去就可以了。我选择了测试4个方法,所以它会自动生成4个测试方法。
Duang!!!
那测试方法怎么写呢?举个例子,我想知道我的UnitTest里面的plus方法有没有写对,那我就对这个方法写个测试。把a,b两个数传递进去,例如a=1和b=1,那a+b就等2,所以这里我们又要了解新的东西了。那就是关于JUnit 的api了,下面有关于JUnit的api,到时候我看看要不要贴几个常用的方法出来,加上实例,这样会更加容易理解。
继续我们的话题:我们知道a+b=2,所以如果plus方法的result是2的话,那就说明了我们的这个plus暂时没有这类型的bug。所以我们要用到方法assertEquals(double expected, double actual)这个方法里的double expected是我们期望的值,double actual是实际的值。例如assertEquals(2, a+b),这样就可以测试方法有没有算错了。其实电脑一般都不会算错吧?哈哈
完整的测试代码如下:
import static org.junit.Assert.*;
import org.junit.Test; public class UnitTestTest {
public static UnitTest puls = new UnitTest();
public static int answer;
@Test
public void testPlus() {
puls.plus(1,1);
assertEquals(2, puls.getresult());
} @Test
public void testMinus() {
puls.minus(1,1);
assertEquals(0, puls.getresult());
} @Test
public void testMultiply() {
puls.multiply(1,1);
assertEquals(1, puls.getresult()); } @Test(expected=ArithmeticException.class)
public void testDivide1(){
puls.divide(0, 1);
} @Test
public void testDivide() {
puls.divide(1,1);
assertEquals(1, puls.getresult());
}
}
可能用心看的童鞋可能会发现我还写了一个测试时关于有没有抛出异常的。如果除数为0那就抛出异常,再去测试它除数为0是有没有抛出异常。有人可能会问,我不知道什么异常啊,很简单,看

我们写完代码,那么唰唰唰的快感马上就要到来了。


我把minus方法里的“减号”改成了“加号”:如下图

然后在运行测试类UnitTestTest.如下图:

被测试的代码有bug,也就是之前把-修改成了+,所以就会出故障。
所以当全部都是绿色的时候是不是很爽,有没有感受到割草机(JUnit4)的唰唰唰的快感。
哈哈,教程到这里就结束了。是不是还想要更多?那就持续关注我的博客吧,可能会在更新一遍更加细节的。
个人体会:
1.测试类一定要看清楚有没有写对,有时候复制黏贴没有修改就会出现错误,所以要看清楚调用的方法对了没有。
2.这个好像真的有比自己写一个测试类来测试更爽,因为有一条绿色的东西,感觉很好玩。
3.我觉得这些小程序不需要写单元测试,而且看到好多人在网上吐槽说现在基本做开发的都不会去写单元测试的,不过,写多点没事儿,所学点更好。所以我不想去追究以后有没有用,现在能学想学那就去学,能写想写,那就去写。所以有时候真的不需要问为什么?有很多事情你现在做可能没有收益,也可能以后也没有收益,那为什么要去做呢?
柯腾说,你信不信十年后,我连log是什么都不知道,还可以活得好好的。 沈佳宜说,我知道。 柯景腾说,那你还那么用功读书。 沈佳宜说,人生本来很多事就是徒劳无功的啊!不是每一件事一定要有意义,经历同样很宝贵!
有感而发,就引用了这句话了。哈哈
---------这篇博文就到此结束了------------
--------如果以上有什么错误或者不足之处,欢迎指出。--------
PS:长期招募小伙伴一起组成一个团队学习软件开发(java), 可以合作开发软件,也可以讨论交流,有志同道合的小伙伴可以发站内消息。
附:
Junit API:http://www.udel.edu/CIS/software/dist/junit4.1/javadoc/
在Eclipse中使用JUnit4进行单元测试(图文教程一)的更多相关文章
- 在Eclipse中使用JUnit4进行单元测试
在Eclipse中使用JUnit4进行单元测试(初级篇) 在Eclipse中使用JUnit4进行单元测试(中级篇) 在Eclipse中使用JUnit4进行单元测试(高级篇)
- 【Java】在Eclipse中使用JUnit4进行单元测试(初级篇)
本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能 ...
- [转]在Eclipse中使用JUnit4进行单元测试(初级篇)
首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除 ...
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除 ...
- 【转】在Eclipse中使用JUnit4进行单元测试(初级篇)
http://www.builder.com.cn/2007/0901/482336.shtml 首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新 ...
- [转]在Eclipse中使用JUnit4进行单元测试(中级篇)
我们继续对初级篇中的例子进行分析.初级篇中我们使用Eclipse自动生成了一个测试框架,在这篇文章中,我们来仔细分析一下这个测试框架中的每一个细节,知其然更要知其所以然,才能更加熟练地应用JUnit4 ...
- 在Eclipse中使用JUnit4进行单元测试(中级篇)
我们继续对初级篇中的例子进行分析.初级篇中我们使用Eclipse自动生成了一个测试框架,在这篇文章中,我们来仔细分析一下这个测试框架中的每一个细节,知其然更要知其所以然,才能更加熟练地应用JUnit4 ...
- 【转】 在Eclipse中使用JUnit4进行单元测试(中级篇)
http://blog.csdn.net/andycpp/article/details/1327346 我们继续对初级篇中的例子进行分析.初级篇中我们使用Eclipse自动生成了一个测试框架,在这篇 ...
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
通过前2篇文章,您一定对JUnit有了一个基本的了解,下面我们来探讨一下JUnit4中一些高级特性. 一.高级Fixture 上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@Af ...
随机推荐
- File类_常见的方法(获取,创建与删除,判断,重命名)
获取: 1.1获取文本名称 1.2获取文件路劲 1.3获取文件大小 1.4获取文件修改或创建时间 import java.io.File; import java.text.DateForma ...
- python第四十六课——函数重写
3.函数重写(override) 前提:必须有继承性 原因: 父类中的功能(函数),子类需要用,但是父类中函数的函数体内容和我现在要执行的逻辑还不相符 那么可以将函数名保留(功能还是此功能),但是将函 ...
- Java自定义类加载和ClassPath类加载器
1 自定义类加载器: 实现规则: 自定义类加载器,需要重写findClass,然后通过调用loadClass进行类加载(loadClass通过递归实现类的双亲委派加载) package com.dax ...
- 剑指offer.在O(1)时间内删除链表节点
给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点.假设链表一定存在,并且该节点一定不是尾节点. 样例 输入:链表 1->4->6->8 删掉节点:第2个节点即6(头节 ...
- gitlab备份及恢复
gitlab备份步骤 https://blog.csdn.net/qq_31666147/article/details/79844107 gitlab版本 下载地址 https://mirrors ...
- 【Codeforces 152E】Garden
Codeforces 152 E 题意:给你一个\(n\times m\)的格子,每个格子里面有一个值\(a_{i,j}\)表示如果要将这个格子变成路的话需要花费这么多代价.现在有\(k\)个特殊格子 ...
- <转>聊聊持续集成
从别处看到了一篇关于持续集成的文章,个人感觉蛮不错的,分享给大家... 原文链接:对于持续集成实践的常见问题解答 1.什么是持续集成? 集成,就是一些孤立的事物或元素通过某种方式集中在一起,产生联系, ...
- Win10上运行Docker
1. 前言 Docker最近推出了可以运行在Win10和Mac上的稳定版本,让我们赶紧来体验一下. Docker发布Mac和Windows 的目标非常简单——开发者可以更加简单方便地在研发机器上使用D ...
- 学习CSS布局 - max-width
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- IDM 破解
IDM确实好用,现贴出破解教程. 感谢原文作者:https://jingyan.baidu.com/article/11c17a2c2bd026f447e39d5a.html