在Eclipse中使用JUnit4进行单元测试(图文教程一)

摘要:
在Eclipse中使用JUnit4进行单元测试,例如编写系统。out打印输出。起初,我认为没有必要使用JUnit,20answer=表达式。表达式();23}24catch(InputMismatchExceptione)25{System.err.println(“错误,
在Eclipse中使用JUnit4进行单元测试

    单元测试,JUnit4。

   这两个有什么关系呢?这就好比(草)单元测试和(割草机)。用这个JUnit4工具去辅助我们进行测试。其实不理解这个也没关系,听多了见多了用多了,自然而然地就会懂了。

   有人可能会想,那我直接自己编写个测试的方法不就可以了。例如写个System.out.print输出,看看是否与我们预期的相等。Bingo!这样也是可以的。但是你有割草机不用,那效果也是很Duang的。

   开始我也觉得没有必要使用割草机(JUnit)的,但是我了解了割草机(JUnit)之后,我很喜欢那种唰唰唰(绿条)的感觉。

   如果你还是一脸疑惑不知道什么是JUnit4,不知道单元测试,OK,Don‘t worry。Just Follow me.跟我一步一步来,先让你体验下唰唰唰的快感。

 

第一步:

打开eclipse.exe,创建一个名为“Ives”的工项目,创建一个名为”UnitTest”的类。写几个方法:两数+ - * /的方法和返回结果的方法。

代码如下:

在Eclipse中使用JUnit4进行单元测试(图文教程一)第1张在Eclipse中使用JUnit4进行单元测试(图文教程一)第2张
 1 import java.util.*;
 2 public class Expression {
 3     int a;
 4     int b;
 5     static int c;//用户答案
 6     int answer;//答案
 7     static Scanner in=new Scanner(System.in);
 8 
 9 
10 public int Expression(){
11     a = new Random().nextInt()%10;
12     b = new Random().nextInt()%10;
13     System.out.print(""+a+"+"+b+"=");
14     return answer = a + b;
15 
16 }
17 public static void main(String[] args){
18     int answer;
19     Expression expression = new Expression();
20     answer = expression.Expression();
21     try{
22         Expression.c = in.nextInt();
23     }
24     catch(InputMismatchException e)
25     {   System.err.println("
Error  ,please Enter a Int number");
26     }
27     if(answer==c)
28     {
29         System.out.print("答对了");
30     }
31     else System.out.print("答错了");
32     //System.out.print("answer="+answer);
33 }
34 }
View Code

第二步:

Duang!酷炫的效果来了,跟紧脚步了。

JUnit4单元测试包引入这个项目:在该项目“Ives”上点右键,点“属性”(Properties),如图:在Eclipse中使用JUnit4进行单元测试(图文教程一)第3张

在弹出的属性窗口中,首先在左边选择“Java 构建路径(Java Build Path)然后到右上选择"库(L)"(Libraries)标签,之后在最右边点击“添加库(A)”(Add Libraries)按钮,如下图所示:在Eclipse中使用JUnit4进行单元测试(图文教程一)第4张

在Eclipse中使用JUnit4进行单元测试(图文教程一)第5张在Eclipse中使用JUnit4进行单元测试(图文教程一)第6张

点击完成,JUnit4软件包就被包含进我们这个项目了。

 

第三步:

生成JUnit测试框架:在Eclipse的包资源管理器(Package Explorer)中用右键点击该类”UnitTest“弹出菜单,选择 新建 →JUnit测试用例 (New à JUnit Test Case)。如下图所示:

在Eclipse中使用JUnit4进行单元测试(图文教程一)第7张 

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

在Eclipse中使用JUnit4进行单元测试(图文教程一)第8张在Eclipse中使用JUnit4进行单元测试(图文教程一)第9张

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

在Eclipse中使用JUnit4进行单元测试(图文教程一)第10张 

千万不要去删除@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),这样就可以测试方法有没有算错了。其实电脑一般都不会算错吧?哈哈

 

完整的测试代码如下:

在Eclipse中使用JUnit4进行单元测试(图文教程一)第1张在Eclipse中使用JUnit4进行单元测试(图文教程一)第12张
 1 import static org.junit.Assert.*;
 2 import org.junit.Test;
 3 
 4 public class UnitTestTest {
 5     public static UnitTest puls = new UnitTest();
 6     public static int answer;
 7     @Test
 8     public void testPlus() {
 9         puls.plus(1,1);
10         assertEquals(2, puls.getresult());
11     }
12 
13     @Test
14     public void testMinus() {
15         puls.minus(1,1);
16         assertEquals(0, puls.getresult());
17     }
18     
19     @Test
20     public void testMultiply() {
21         puls.multiply(1,1);
22         assertEquals(1, puls.getresult());
23         
24     }
25     
26     @Test(expected=ArithmeticException.class)
27     public void testDivide1(){
28         puls.divide(0, 1);
29     }
30     
31     @Test
32     public void testDivide() {
33         puls.divide(1,1);
34         assertEquals(1, puls.getresult());
35     }
36 }
View Code

可能用心看的童鞋可能会发现我还写了一个测试时关于有没有抛出异常的。如果除数为0那就抛出异常,再去测试它除数为0是有没有抛出异常。有人可能会问,我不知道什么异常啊,很简单,看

在Eclipse中使用JUnit4进行单元测试(图文教程一)第13张

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

在Eclipse中使用JUnit4进行单元测试(图文教程一)第14张

在Eclipse中使用JUnit4进行单元测试(图文教程一)第15张

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

在Eclipse中使用JUnit4进行单元测试(图文教程一)第16张

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

在Eclipse中使用JUnit4进行单元测试(图文教程一)第17张

被测试的代码有bug,也就是之前把-修改成了+,所以就会出故障。

所以当全部都是绿色的时候是不是很爽,有没有感受到割草机(JUnit4)的唰唰唰的快感。

哈哈,教程到这里就结束了。是不是还想要更多?那就持续关注我的博客吧,可能会在更新一遍更加细节的。

个人体会:

1.测试类一定要看清楚有没有写对,有时候复制黏贴没有修改就会出现错误,所以要看清楚调用的方法对了没有。

2.这个好像真的有比自己写一个测试类来测试更爽,因为有一条绿色的东西,感觉很好玩。

3.我觉得这些小程序不需要写单元测试,而且看到好多人在网上吐槽说现在基本做开发的都不会去写单元测试的,不过,写多点没事儿,所学点更好。所以我不想去追究以后有没有用,现在能学想学那就去学,能写想写,那就去写。所以有时候真的不需要问为什么?有很多事情你现在做可能没有收益,也可能以后也没有收益,那为什么要去做呢?

柯腾说,你信不信十年后,我连log是什么都不知道,还可以活得好好的。 沈佳宜说,我知道。 柯景腾说,那你还那么用功读书。 沈佳宜说,人生本来很多事就是徒劳无功的啊!不是每一件事一定要有意义,经历同样很宝贵! 

有感而发,就引用了这句话了。哈哈

---------这篇博文就到此结束了------------

--------如果以上有什么错误或者不足之处,欢迎指出。--------

PS:长期招募小伙伴一起组成一个团队学习软件开发(java), 可以合作开发软件,也可以讨论交流,有志同道合的小伙伴可以发站内消息。

附:

 Junit API:http://www.udel.edu/CIS/software/dist/junit4.1/javadoc/

免责声明:文章转载自《在Eclipse中使用JUnit4进行单元测试(图文教程一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vi编辑器的使用(翻阅和编辑代码)Linux NFS服务器的安装与配置(转载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pycharm常用功能

一、创建项目 1、使用 pycharm 新建一个项目 打开-->create new project--> 进入页面 pure python pure python 页面 location(地址):在哪个路径下创建项目,事先创建好一个文件夹“py31_class”,存放代码(使用英文创建文件夹,不要有特殊符号和空格) project inter...

MethodImplOptions.Synchronized的一点讨论

Review代码发现有一个方法加了[MethodImpl(MethodImplOptions.Synchronized)] 属性,这个属性的目的,从名字上就可以看出,是要对所有线程进行同步执行。 对方法加上这个属性之后,会把整个方法体加在一个同步块中,比如下面的代码: [MethodImpl(MethodImplOptions.Synchronized)]...

PLSQL配置怎么连ORACLE

如果是windows的话,在服务里面就可以查服务要启动,监听也要启动!可以用lsnrctl命令查看监听! 首先你需要在我的电脑的属性里,找到环境变量,配置系统下面的path,看看里面指向的是哪里(我的电脑里就有oracle的多个版本)而且要在你的oracle的X:oracleproduct10.2.0db_1 etworkADMIN nsnames.ora...

单元测试框架TestNg使用总结

工欲善其事,必先利其器 单元测试的重要性是不言而喻的。但如果没有好的单元测试工具,是无法激起开发人员的欲望。 Testng便是利器之一。TestNG是基于Annotation的测试框架的先驱,他拥有通过添加诸如灵活的装置、测试分类、参数测试和依赖方法等特性来克服JUnit3的一些不足之处。下面我将总结一些TestNg的重要特性。 关于testng.xml...

主流框架中DOMContentLoaded事件的实现(转)

也许还有朋友不太清楚DOMContentLoaded这个事件。简单的说,这个事件就是要在大多数情况下去替代window.onload事件,因为window.onload事件必须要等待页面所有元素的资源都下载完毕时才触发。这个事件实际是上w3c推荐的标准事件,是在DOM树建成的时候触发,因此要比onload事件快很多。ff, opera高版本已经支持了该事件...

Hive调优实战[转]

Hive优化总结 【转自:http://sznmail.iteye.com/blog/1499789】 优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜。 理解hadoop的核心能力,是hive优化的根本。这是这一年来,项目组所有成员宝贵的经验总结。   长期观察hadoop处理数据的过程,有几个显著的特征: 1.不怕数据多...