Android单元测试的利器:Juint(二):Juint的生命周期

前言

上个星期总算是忙起来了,于是博客就休息了一个星期,这次我们接着聊Juint,看看他更多的用法。

再次强调:这是基于Juint 4.0 以上版本,跟之前的版本的用法还是有差别的。

正文

首先我们回顾一下上次的简单的demo:

public class TimeUtilTest {

    /**
     * 运行的测试方法,注意需要使用@Test注解
     */
    @Test
    public void timeFormat_isCorrect() throws Exception {
        long time = 1505720213000L;
        //预期的结果
        String result = "2017/09/18 15:36:53";
        // TimeUtil是编写的Java工具类
        assertEquals(result, TimeUtil.formateTime(time));
    }

}

在Juint中,所有需要运行的测试都需要使用@test注解,否则这个方法是不会被运行的。

可以说Juint的大部分功能都是通过注解使用的,根据功能我把注解分为两类:

1、生命周期注解
2、功能类注解

生命周期注解

生命周期注解,就是从我们开始运行一个测试用例到运行结束期间会触发的方法,跟Activity类似,他也是有固定的生命周期的。

生命周期注解主要有:

1、@BeforeClass 必须是static方法,被注解的方法将会测试最开始的时候调用

2、@Before 被注解的方法会在每一次调用@test之前调用

3、@Test 要运行的测试方法

4、@After 被注解的方法会在每一次调用@test之后调用

5、@AfterClass 必须是static方法,被注解的方法将会测试结束的时候调用

下面是一段测试代码:

public class LifeCycleTest {

    @BeforeClass
    public static void beforeClass(){
        System.out.println("beforeClass");
    }

    @Before
    public void before(){
        System.out.println("before");
    }

    @Test
    public void testOne(){
        System.out.println("test One");
    }

    @Test
    public void testTwo(){
        System.out.println("test Two");
    }

    @After
    public void after(){
        System.out.println("after");
    }

    @AfterClass
    public static void afterClass(){
        System.out.println("afterClass");
    }

}

代码里注解了两个测试方法testOne和testTwo,现在我们运行一下:
这里写图片描述

从打印上看到,整个测试流程从@BeforeClass开始,中间运行了testOne,然后运行了testTwo,而每一次运行测试方法时,也运行了@Before和@After方法,最终到@AfterClass结束。

分别看一下testOne和testTwo的打印:

这里写图片描述
这里写图片描述

从上面两张图可以更加直观的看到@Before和@After的确在每一个测试方法前后都运行了,并且属于这个测试方法的整个运行周期。

我们画一个简单的流程图:

这里写图片描述

有了对Juint的生命周期的了解,我们就可以更加准确合理的使用每一个测试对象:

类似于Activity的OnCreate和OnDestroy
@BeforeClass 适合在测试开始时,加载必要的资源。
@AfterClass 在测试结束时,释放之前加载的资源。

@Before 初始化每一个测试方法的全局变量
@After 测试结束后,进行一些打印和全局变量的重置

很遗憾,我们无法知道正在运行的是哪个测试方法,所以也就无法让@Before和@After为每一个测试方法做一些专门的准备。因为@Before和@After是为了全局而存在的,也是为了把每一个测试方法都独立开,对于这种设计我们也是应该可以理解的。

总结

这一篇我们已经弄明白了Juint运行的主要生命周期,也是我们编写本地测试最常用的知识,到此为止,对于一般般的测试,我们已经能轻松搞定了。

接下来我们就可以去了解一下Juint的一些更高级的用法了,今天就到此为止,拜拜~

猜你喜欢

转载自blog.csdn.net/u011315960/article/details/78318472