写点什么

JUnit 速查手册

用户头像
jiangling500
关注
发布于: 2021 年 02 月 15 日

快速入门

整个项目结构如下:

待测试类/函数:

package com.itranswarp.learnjava;
public class Factorial { public static long fact(long n) { long r = 1; for (long i = 1; i <= n; i++) { r = r * i; } return r; }}
复制代码

测试类/函数:

package com.itranswarp.learnjava;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class FactorialTest { @Test public void testFact() { assertEquals(1, Factorial.fact(1)); }}
复制代码

其中,测试类以 Test 为后缀是一个惯例,并将其放入 test 目录中。

常用测试方法

assertEquals(); // 期待结果相等assertTrue(); // 期待结果为 trueassertFalse(); // 期待结果为 falseassertNotNull(); // 期待结果为非 nullassertNotNull(); // 期待结果为数组,并与期望数据每个元素的值均相等
// 使用浮点数时,由于浮点数无法精确地进行比较,因此,我们需要调用 assertEquals(double expected, double actual, double delta) 这个重载方法,指定一个误差值assertEquals(0.1, Math.abs(1 - 9 / 10.0), 0.0000001);
复制代码

使用 Fixture

标记为 @BeforeEach@AfterEach 的方法,会在运行每个 @Test 方法前后自动运行。

public class Calculator {    private long n = 0;
public long add(long x) { n = n + x; return n; }
public long sub(long x) { n = n - x; return n; }}
复制代码

测试代码:

public class CalculatorTest {    Calculator calculator;
@BeforeEach public void setUp() { this.calculator = new Calculator(); }
@AfterEach public void tearDown() { this.calculator = null; }
@Test void testAdd() { assertEquals(100, this.calculator.add(100)); assertEquals(150, this.calculator.add(50)); assertEquals(130, this.calculator.add(-20)); }
@Test void testSub() { assertEquals(-100, this.calculator.sub(100)); assertEquals(-150, this.calculator.sub(50)); assertEquals(-130, this.calculator.sub(-20)); }}
复制代码

标记为 @BeforeAll@AfterAll 的方法,会在运行所有 @Test 前后运行。注意:@BeforeAll@AfterAll 只能标注在静态方法上。

public class DatabaseTest {    static Database db;
@BeforeAll public static void initDatabase() { db = createDb(...); } @AfterAll public static void dropDatabase() { ... }}
复制代码


发布于: 2021 年 02 月 15 日阅读数: 19
用户头像

jiangling500

关注

万丈高楼平地起,勿在浮沙筑高台! 2019.12.17 加入

一名IT从业者,熟悉Linux下C/C++,了解MySQL、Java等。

评论

发布
暂无评论
JUnit速查手册