在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 ...
随机推荐
- 字符串之StringBuffer 与 StringBuilder的对比
StringBuilder 和 StringBuffer是高度类似的两个类 StringBuilder是StringBuffer的版本改写,下面从几个方面简单的对比下他们的区别 原文地址:[十四]基础 ...
- 跨域访问的解决方案(非HTML5的方法:JSONP)
http://supercharles888.blog.51cto.com/609344/856886 跨域访问一直是困扰很多开发者的问题之一.因为涉及到安全性问题,所以跨域访问默认是不可以进行的,否 ...
- Android中消息系统模型和Handler Looper
http://www.cnblogs.com/bastard/archive/2012/06/08/2541944.html Android中消息系统模型和Handler Looper 作为Andro ...
- 倒水问题(Fill, UVa 10603)
[题目描述] 有三个没有刻度的水壶,容量分别为a,b和c(单位为升,都是<=200的正整数).初始时前两个水壶是空的,而第三个装满了水.每次可以从一个水壶往一个水壶里倒水,直到一个水壶倒空或者另 ...
- Python--Windows下安装虚拟环境
为什么需要虚拟环境 在python开发中,我们可能会遇到一种情况:就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突.在这种情况之下,我们就需要一个工具能够将这两 ...
- oracle 查询非自增长分区的最大分区
select a.table_owner, a.table_name, a.max_partition from (select table_owner, table_name, max(parti ...
- 【USACO 2019 Feburary Contest】Gold
模拟二月金组,三个半小时AK. USACO 2019 Feburary Contest, Gold T1 题意:给定一棵树,每个点有点权,每次可以进行以下操作之一: 更改一个点的点权 求某条路径上的点 ...
- http协议进阶(六)代理
web代理服务器是网络的中间实体,位于客户端和服务器之间,扮演“中间人”的角色,作用是在各端点之间来回传送报文. 其原理是:客户端向代理服务器发送请求报文,代理服务器正确的处理请求和连接,然后返回响应 ...
- wifidog源码分析 - 认证服务器心跳检测线程
引言 但wifidog启动时,会自动启动认证服务器心跳检测线程,此线程默认每隔60s与认证服务器交互一次,会将路由器的信息(系统启动时长,内存使用情况和系统平均负载)告知认证服务器,并通过一个&quo ...
- TCP/IP协议--TCP的超时和重传
TCP是可靠传输.可靠之一体现在收到数据后,返回去一个确认.但是不能完全避免的是,数据和确认都可能丢失.解决这个办法就是,提供一个发送的重传定时器:如果定时器溢出时还没收到确认,它就重传这个报文段. ...