Android单元测试系列(2)-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 全栈知识体系

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值