深入浅出学测试——(二)

JUnit4—基本概念

1、开发环境和运行环境搭建

将junit-4.x.jar 添加到classpath

2、准备被测试类

被测试类随便写一个简单的功能,让我们可以示例JUnit4的用法即可。

3、准备测试类

1、类仍然是普通的类

一般都放在与被测试类同包下,类名为被测试类名前加上Test

2、测试方法的声明遵循以下原则

1、必须是public  non-static 无参

2、在方法头上加上@Test

3、测试方法内部的写法

1、猜测一个结果

2、运行被测试代码,获得实际结果

3、使用断言来判断猜测结果和实际结果是否相等

4、JUnit4—helloworld

  简单期间我们的HelloWorld就写一个除法运算如:

Java代码:

Divide

package com.jhaso.main;

 

public class Divide {

    public int devide(int a, int b){

       return a/b;

    }

}

 

 

 

 

 

 

 

 

 


DivideTest

package com.jhaso.main;

 

import org.junit.Assert;

//注意:导入的时候,同类不同包。

import org.junit.Test;

public class DivideTest {

    //1、必须是public      non-static 无参

    //2、在方法头上加上@Test

    @Test

  public void test1(){

       Divide divide= new Divide();

       //1、猜测一个结果

       final int expected = 3;

       //2、运行被测试代码,获得实际结果

       final int actual = divide.devide(6,     2);

      //3、使用断言来判断猜测结果和实际结果是否相等

       Assert.assertEquals(expected, actual);

    }

 

@Test

    public void test2(){

       Divide divide= new Divide();

       //1、猜测一个结果

       final int expected = 3;

相等

       Assert.assertEquals(expected, actual);

    }

    @Test

    public void test3(){

       Divide divide= new Divide();

       //1、猜测一个结果

       final int expected = 3;

       //2、运行被测试代码,获得实际结果

       final int actual = divide.devide(7,     0);

       //3、使用断言来判断猜测结果和实际结果是否相等

       Assert.assertEquals(expected, actual);

    }

}

 

     //2、运行被测试代码,获得实际结果

     final int actual = divide.devide(7, 2);

     //3、使用断言来判断猜测结果和实际结果是否

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


   

   

 

 

 

 

 

 

 

 

 

 

   【补充】

    「著名的绿红条」

     * 1)如果你直接运行DivideTest的话,默认是把所有的方法都运行,只要有一个方法出错就会显示红条,所有的方法都正确的时候才会显示绿条

                                             

    * 2)测试的方法之间是独立的,也就是说test3这个方法及时放到test2之前,在测试的时候是不会影响test2方法的测试。及测试跟方法顺序无关。

5、JUnit4—夹具

初始化和销毁方法

@Before:初始化方法

@After:释放资源

@BeforeClass:针对所有测试,只执行一次,且必须为static void

@AfterClass:针对所有测试,只执行一次,且必须为static void

测试方法

@Test:测试方法,还可以声明只接受哪个异常作为正确结果

@Test(timeout=XXX) :该元数据传入了一个时间(毫秒)给测试方法,如果测试方法在限定的时间之内没有运行完,则测试失败。

@Ignore:忽略某个测试方法

一个JUnit4 的单元测试用例执行顺序为:

@BeforeClass-->

@Before --> @Test --> @After --> 【第一个测试方法】

@Before --> @Test --> @After --> 【第二个测试方法】

@Before --> @Test --> @After --> 【第三个测试方法】

@AfterClass

每一个测试方法的调用顺序为:

@Before --> @Test --> @After

【补充】

@Before常用在读取配置文件获取数据库上,@After常用在关闭数据流,关闭数据库上。

@Before 和 @After 标识的方法只能各有一个,这个相当于取代了Junit 4以前版本中的setUp 和 tearDown 方法,方法名也可以自己定义了。

1、JUnit4—断言

1、结果状态验证:验证结果是否与预期的一样

Assert.assertEquals验证是否相等

2、防卫断言:验证调用功能前所作的各项假设。

Assert.assertTrue(list.isEmpty())  /assertFalse假设结果true/false

3、差值断言

Assert.assertEquals(sizeBefore+1,list.size());

4、交互断言:验证代码与其协作者对象的交互行为是否正确

Assert.assertTrue(list.contains(aaa));

2、JUnit4—测试套件

测试套件:一组测试用例

package com.jhaso.main;

 

import org.junit.runner.RunWith;

import org.junit.runners.Suite;

import org.junit.runners.Suite.SuiteClasses;

 

@RunWith(Suite.class)

@SuiteClasses({MyAddTest.class, DivideTest.class})

public class MyTestSuite     {

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 


【注意】观察套件和测试用例的关系。

--测试套件里不仅可以放测试用例,还可以放更小的测试套件。

 

3、JUnit4—与maven

安装插件

将获得的m2eclipse.rar解压到eclipse的dropins文件夹下,重启

eclipse,就可以看到maven插件了。

新建项目

选择【New】->【Project】->【Maven Project】,选择create a simple

project,填入GAV,选择打包方式jar/war。

如果要新建web工程,请选择打包方式为war,为了让项目能在eclipse相关

的tomcat下运行,还需要一点点麻烦的配置。选择项目的属性,添加dynamic web project支持【project facets】;再次选择项目的属性,重整项目的部

【deployment assembly】。这部分操作非常非常麻烦,请注意看老师的演示。

添加依赖

在项目上右击【maven】->【add dependency】。

运行命令行

在项目上右击【Run as】->【Maven test】

生成junit报告

在项目上右击【Run as】->【Maven build】,在Goals:中输入

clean test site surefire-report:report

点击【run】后查看target文件夹下,你会发现在classes和test-class文件之外多了很多东西如:site、surefire-reports文件夹。那些就是写测试报告。

 

你可能感兴趣的:(深入浅出学测试——(二))