篇首语:本文由小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章