> 文章列表 > Junit概述和快速入门

Junit概述和快速入门

Junit概述和快速入门

单元测试概述

在程序中,一个单元可以是一个完整的模块,但它通常是一个单独的方法或者程序

在面向对象的编程中,一个单元通常是整个界面,例如类,但可能是单个方法

JUnit是一个java编程语言的单元测试框架

通过先为最小的可测试单元编写测试,然后编写这些单元之间的复合行为,就可以为复杂的应用程序建立全面的测试

单元测试的优点:

自己编写main方法测试存在的问题:

无法得到测试结果的报告,需要程序员自己去观察测试是否成功

如果一个测试方法失败了,其他方法测试会受到影响

无法一键完成全部模块的全部方法的测试

单元测试的优点:

可以生成方法测试报告。如果执行结果为绿色的,那么表面测试通过;如果测试结果是红色的,表面测试不通过

单元测试中,某个方法测试失败了,不影响其他测试方法的测试

可以一键执行全部测试方法

单元测试快速入门

编码约定

类放到test包中

在test包下创建和原包名相同的包

类名用XxxTest结尾

方法用testMethod命名

单元测试快速入门

1.和src同级建立test目录,并修改该目录为Test Sources Root

2.在test目录下建包com.aynu

3.在com.aynu包下新建类:MyMathTest

4.在类中编写第一个测试方法:testAdd(){}

                方法修饰符:public void testAdd(){ }

5.如何让该方法称为Junit中的测试方法呢?

                导入junit-4.12.jar和hamcrest-core-1.3.jar包

                然后再方法上添加@Test注解

6.运行测试方法

7.使用断言改进测试方法的运行

package com.aynu;//自定义数学类,用于对两个数做加减乘除public class MyMath {public int add(int a,int b){return a+b;}public int sub(int a,int b){return a-b;}public int mul(int a,int b){return a*b;}public int div(int a,int b){return a/b;}
}
package com.aynu;import org.junit.Test;public class MyMathTest {@Testpublic void testAdd(){MyMath myMath=new MyMath();int result = myMath.add(10,20);System.out.println(result);}@Testpublic void testsub(){MyMath myMath=new MyMath();int result = myMath.sub(20,10);System.out.println(result);}}


使用断言改进测试方法

Junit测试框架中Assert类就是实现断言的工具,主要作用如下:

单元测试用于判断某个特定条件下某个方法的行为

执行单元测试为了证明某段代码的执行结果和期望的一致

查看两个对象是否相等,类似于字符串比较使用的equals()方法

public static void assertEquals(Object expected(期望值),Object actual(实际值))

public static void assertNotEquals(Object unexpected,Object actual)

package com.aynu;import org.junit.Assert;
import org.junit.Test;public class MyMathTest {//    @Test
//    public void testAdd(){
//        MyMath myMath=new MyMath();
//        int result = myMath.add(10,20);
//        System.out.println(result);
//    }
//    @Test
//    public void testsub(){
//        MyMath myMath=new MyMath();
//        int result = myMath.sub(20,10);
//        System.out.println(result);
//
//    }//    查看两个对象是否相等,类似于字符串比较使用的equals()方法
//    public static void assertEquals(Object expected,Object actual)@Testpublic void testAdd(){MyMath myMath=new MyMath();int result = myMath.add(10,20);//public static void assertEquals(Object expected,Object actual)Assert.assertEquals(30,result);//Assert.assertEquals(20,result);}}

 

 Junit常用注解:

方法名 说明
@Test 说明依附在JUnit的public void 方法可以作为一个测试案例
@Before 修饰实例方法,方法针对每一个测试用例执行,但是是在执行测试用例之前
@After 修饰实例方法,方法针对每一个测试用例执行,但是是在执行测试用例之后
@BeforeClass 修饰静态方法,方法首先执行,并且只执行一次,用于初始化资源
@AfterClass 修饰静态方法,方法最后执行,并且只执行一次,用于释放资源