指点成金-最美分享吧

登录

Android单元测试系列-Junit

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了Android单元测试系列-Junit相关的知识,希望对你有一定的参考价值。

书接上文:Android单元测试系列(1)-开篇_Chris_166的博客-CSDN博客

本篇来介绍下Junit的简单使用,当前已经更新到Junit5了,我这里还是以Junit4来说明吧。

一、Junit官网

  • 官网地址

https://junit.org/junit4/

  • 官方入门文档

https://github.com/junit-team/junit4/wiki/Assertions

  • 官方github

https://github.com/junit-team

二、Demo示例

1. 目录结构 

2. 被测试的类

// gradle引入Junit

dependencies     testImplementation "junit:junit:4.+"

// 被测试的类

package com.fanff.unittestdemo;public class Calculator     public int addExact(int x, int y)         return x + y;        public int subtractExact(int x, int y)         return x - y;        public int multiplyExact(int x, int y)         return x * y;        // TODO: zero case    public int intDivide(int x, int y)         return x / y;    

// 测试类: CalculatorTest.java

package com.fanff.unittestdemo;import org.junit.After;import org.junit.AfterClass;import org.junit.Assert;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;/** * 常用的注解说明: * @Test:表示一条测试用例; * @Before注解的方法在每个测试方法调用之前都会先被调用; * @After注解的方法每个测试方法运行结束之后都会别调用; * @BeforeClass/@AfterClass: * (1) 在跑一个测试类的所有测试方法之前,会执行一次被@BeforeClass注解的方法,执行完所有测试方法之后,会执行一遍被@AfterClass注解的方法。 * (2) 被这两个annotation修饰的方法必须是静态的。 */public class CalculatorTest     private static Calculator sCalculator = null;        /**     * 如果@BeforeClass/@AfterClass注解的setUpGlobalSource()和tearDownGlobalSource()不带static,就会报错:     * org.junit.runners.model.InvalidTestClassError: Invalid test class "com.fanff.unittestdemo.CalculatorTest":     *   1. Method setUpGlobalSource() should be static     *   2. Method tearDownGlobalSource() should be static     */    @BeforeClass    public static void setUpGlobalSource()         System.out.println("setUpGlobalSource enter \n");        sCalculator = new Calculator();        @AfterClass    public static void tearDownGlobalSource()         System.out.println("tearDownGlobalSource enter");        sCalculator = null;            @Before    public void setUp() throws Exception         System.out.println("setUp enter");        @After    public void tearDown() throws Exception         System.out.println("tearDown enter \n");        @Test    public void testAddExactTest()         System.out.println("testAddExactTest enter");        Assert.assertEquals(8, sCalculator.addExact(2, 6));        @Test    public void testSubtractExactTest()         System.out.println("testSubtractExactTest enter");        Assert.assertEquals(8, sCalculator.subtractExact(5, -3));        @Test    public void testMultiplyExact()         System.out.println("testMultiplyExact enter");        Assert.assertEquals(8, sCalculator.multiplyExact(1, 8));        @Test    public void testIntDivide()         System.out.println("testIntDivide enter");        Assert.assertEquals(8, sCalculator.intDivide(8, 1));    

 执行结果:

setUpGlobalSource enter setUp entertestIntDivide entertearDown enter setUp entertestAddExactTest entertearDown enter setUp entertestSubtractExactTest entertearDown enter setUp entertestMultiplyExact entertearDown enter tearDownGlobalSource enter

在Junit的使用中,注意不同注解和断言的作用,这里就不赘述了。

当demo跑起来之后就可以在网上搜下其他的注解和断言(Assert (JUnit API))的用法。

---------------------------------------

引用:单元测试 - JUnit4 详解 | Java 全栈知识体系

----------------------------------------

以上是关于Android单元测试系列-Junit的主要内容,如果未能解决你的问题,请参考以下文章