`

测试技术

阅读更多

      生命在于生生不止的学习。当你一片茫然的时候,请不要急躁,静下心来考虑,总会解决的。

                                                                                            -------------题外话

     

      编写单元测试用例是开发人员必不可少的一项技能,本篇文章主要介绍两种重要的单元测试框架技术。

Junit和TestNG.

     单元测试框架的要求:每一个单元测试独立于其他单元测试,产生错误被记录,用户轻松指定执行那些单元测试。

    Junit:

    主要讲解最新的Junit4框架,采用了java 5的Annotation技术

    Junit4生命周期:类级初始化资源处理、方法级初始化资源处理、执行测试用例中方法、方法级销毁资源处理、类级销毁资源处理。

    如果一个测试用例中编写多个初始化处理方法,运行时先执行最后面的初始化方法,然后依次往前执行,销毁资源处理方法,依照顺序往后执行。

   @Test  Junit中这个注解对于方法签名没有限制,标注一个测试方法,会生成一个测试用例运行

   @BeforeClass 在一个Test类的所有测试方法执行前执行一次  public static

   @AfterClass在一个Test类的所有测试方法执行后执行一次  一定会执行

   @Before 在每个测试方法之前都会运行一次  public 非static

   @After   在每个测试方法之后都会运行一次  一定会执行

 

    异常测试  @Test传入expected参数值,如果没有抛出异常或抛出期待异常,即失败

    超时测试  @Test,为timeout参数设置时间值。超过指定的毫秒数,即测试失败

    参数化测试 

             为了程序的健壮性,需要模拟不同参数对方法进行测试,不需要为每个类型参数创建一个测试方法。

      1.为参数化测试类用@RunWith注释指定特殊的运行器:Parameterized.class

      2.在测试类中声明几个变量,分别用于存储期望值和测试用的数据,并创建一个带参的构造函数

      3.创建一个静态测试数据供给方法,其返回类型为Collection,并用@Parameter注释以修饰。

      4.编写测试方法@Test,不带参数,不能有参数

 

     测试运行器

            Junit中所有测试方法都由测试运行器负责执行。默认测试运行期BlockJUnit4ClassRunner

            自己的运行器要继承org.junit.runner.Runner

            参数化测试 @RunWith(Parameterized.class)

            打包测试@RunWith(Suite.class)    @SuiteClass({,,})

 

   Junit4断言

        assertArrayEquals(Object[] obj1,Object[] obj2);

        assertThat断言  结合Hamcrest

                assertThat(T actual,Matcher matcher);

                assertThat(String reason,T actual,Matcher matcher)

        Matchers匹配方法静态类

        例子:

             assertThat(tom.getCredits(),greaterThan(50));

 

   

   

  

   

 

  

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics