Android单元测试系列-Junit
Posted Chris_166
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 enter
testIntDivide enter
tearDown enter
setUp enter
testAddExactTest enter
tearDown enter
setUp enter
testSubtractExactTest enter
tearDown enter
setUp enter
testMultiplyExact enter
tearDown enter
tearDownGlobalSource enter
在Junit的使用中,注意不同注解和断言的作用,这里就不赘述了。
当demo跑起来之后就可以在网上搜下其他的注解和断言(Assert (JUnit API))的用法。
---------------------------------------
引用:单元测试 - JUnit4 详解 | Java 全栈知识体系
----------------------------------------
以上是关于Android单元测试系列-Junit的主要内容,如果未能解决你的问题,请参考以下文章