美文网首页
Android测试系列-Junit(三)

Android测试系列-Junit(三)

作者: zgfei | 来源:发表于2017-09-25 15:14 被阅读45次

    目录

    • 注解简介
    • 执行过程注解的使用
    • 其他注解的使用

    注解简介

    JUnit包中包含了一些注解的使用,其中有以下一些注解:

    @Before
    该方法在每次测试方法调用前都会调用

    @Test
    说明了该方法需要测试

    @BeforeClass
    该方法在所有测试方法之前调用,只会被调用一次

    @After
    该方法在每次测试方法调用后都会调用

    @AfterClass
    该方法在所有测试方法之后调用,只会被调用一次

    @Ignore
    忽略该方法

    @RunWith 和 @Suite
    套件测试

    执行过程注解的使用

    在注解简介中我们提到的前五个注解都是执行过程的注解,接下来我们来看看如何使用:

    public class AnnotationsTest {
    private static final String TAG = "AnnotationsTest";
    @Before
    public void before() {
        System.out.println(TAG + "===before===");
    }
    @BeforeClass
    public static void beforeClass() {
        System.out.println(TAG + "===beforeClass===");
    }
    @Test
    public void testOne() {
        System.out.println(TAG + "===testOne===");
    }
    @Test
    public void testTwo() {
        System.out.println(TAG + "===testTwo===");
    }
    @After
    public void after() {
        System.out.println(TAG + "===after===");
    }
    @AfterClass
    public static void afterClass() {
        System.out.println(TAG + "===afterClass===");
    }
    }
    

    我们可以查看一下运行的结果:

    运行过程的测试.png

    在这里我们可以看到我们使用了两个@Test注解,因此会分别运行一次testOne()和testTwo()方法,而@Before和@After是在@Test标注的方法前后分别运行一次,因此会有两次运行,最后@BeforeClass和@AfterClass是指在类运行前和后分别运行一次,因此出现在运行的最前面和最后面。

    其他注解的使用

    使用忽略@Ignore
    我们在上面运行的代码中添加testThree()方法,并用@Ignore和@Test标注然后运行:

    @Ignore
    @Test
    public void testThree() {
        System.out.println(TAG + "===testThree===");
    }
    

    查看运行结果为:

    忽略使用结果.png

    我们可以看到期中testThree()方法是不一样的,表示没有运行,查看运行的接口也可以看出没有执行testThree()方法。这个比较适合我们使用在多个方法测试时,需要忽略其中的某些已经测过的方法使用。

    注意:
    1、在Android中书写测试时,不能使用Log,不然会报错,这是因为JUnit相当于在Java环境下进行测试,是没有Android的Log的。
    2、使用@BeforeClass和@AfterClass修饰的必须是静态方法

    套件测试@RunWith 和 @Suite

    1、被测试的类

    public class SuitTestUtils {
    private String str = "Suit Test Utils";
    public SuitTestUtils(String str) {
        this.str = str;
    }
    public String addString(String a) {
        str = str + a;
        System.out.println(str);
        return str;
    }
    public String printString() {
        System.out.println(str);
        return str;
    }
    }
    

    在这个类中有两个方法需要测试,我们分别在一个测试类中测试期中的一个方法。
    2、测试的类

    import org.junit.Before;
    import org.junit.Test;
    public class SuitOneTest {
    private String str = "Suit One Test";
    private SuitTestUtils utils;
    @Before
    public void setUp() {
        utils = new SuitTestUtils(str);
    }
    @Test
    public void testPrintString() {
        utils.printString();
    }
    }
    

    SuitOneTest 类用来测试printString()方法

    import org.junit.Before;
    import org.junit.Test;
    public class SuitTwoTest {
    private String str = "Suit Two Test";
    private SuitTestUtils utils;
    @Before
    public void setUp() {
        utils = new SuitTestUtils(str);
    }
    @Test
    public void testAddString() {
        utils.addString(" Hello world");
    }
    }
    

    SuitTwoTest 类用来测试addString()方法
    确定这两个类都是可以跑通的。
    3、套件测试的类

    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    
    @RunWith(Suite.class)
    @Suite.SuiteClasses({SuitOneTest.class, 
    SuitTwoTest.class})
    public class SuitTest {
    }
    

    我们将前两个测试类添加进来,一并测试,然后选中SuiteClasses右键-选择Run SuitTest进行运行,结果为:

    运行结果.png

    从结果中可以看出来两个测试类都跑了。这个功能比较适合多个测试类同时运行的情况,有的时候我们的测试类测试相应的类的功能,多个测试类一同测试,就可以不用每个单独跑一遍,减少时间。

    最后

    还有一些其他的高级用法,这里就不做过多的介绍了,文章的结尾会给出参考链接。我也是参考这些文章来学习的,非常感谢提供资料的作者。
    这里JUnit测试基本就告一段落了,文中介绍了一些简单的用法,因为个人能力有限吧,在这里希望大家能把测试应用到项目中或者经常使用,这样才有意义。

    其他用法: Junit - Android测试之旅(二)
    参考:http://wiki.jikexueyuan.com/project/junit/
    源码地址

    相关文章

      网友评论

          本文标题:Android测试系列-Junit(三)

          本文链接:https://www.haomeiwen.com/subject/tstdextx.html