在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 ...
随机推荐
- Reachability
一.Reachability中介绍了取得/检测网络状态的方法. 二.使用 1.添加源文件:Reachability.h和Reachability.m 2.添加framework———SystemCon ...
- [php] yii debug设置
最近在使用yii写rest api发现在所有错误信息都写在log文件里调试不是很直接 在index.php头部查入就ok了 defined('YII_ENABLE_EXCEPTION_HANDLER' ...
- Linux下Sublime Text 3的安装
1.下载 官网下载 或者直接 #wget http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_3059_x32.tar.bz2 (linux ...
- springboot整合redisson分布式锁
一.通过maven引入redisson的jar包 <dependency> <groupId>org.redisson</groupId> <artifact ...
- sum-root-to-leaf-numbers (前序遍历)
class Solution { public: int sumNumbers(TreeNode *root) { ; if (root == NULL) return sum; return pre ...
- 在阿里云Centos下LNMP环境搭建
首先,需要安装C语言的编译环境,因为Nginx是C语言编写的.通常大多数Linux都会默认安装GCC,如果没有的话,可以如下安装. 安装make: yum -y install gcc automak ...
- gensurf
我来做个福利吧,首先将模糊文件.fis,加载到workspace中,这个大家都会,利用上面说的那个例子a = readfis('tipper');gensurf(a)这样默认的就是前两个输入的曲线,要 ...
- Redis 参数说明
4. Redis的配置 4.1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 4.2. 当Redis以守护进程方式运行时,Redis ...
- Luogu3793 由乃救爷爷 分块、ST表
传送门 因为昨天写暴力写挂在UOJ上用快排惨遭卡常,所以今天准备写一个卡常题消遣消遣,然后时间又垫底了QAQ 这道题显然需要支持一个\(O(N)\)预处理\(O(1)\)查询的ST表,显然普通的ST表 ...
- Luogu4899 IOI2018 Werewolf 主席树、Kruskal重构树
传送门 IOI强行交互可还行,我Luogu的代码要改很多才能交到UOJ去-- 发现问题是对边权做限制的连通块类问题,考虑\(Kruskal\)重构树进行解决. 对于图上的边\((u,v)(u<v ...