Junit断言

什么是断言

断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。

使用断言可以创建更稳定、品质更好且 不易于出错的代码。当需要在一个值为 false 时中断当前操作的话,可以使用断言。单元测试必须使用断言(Junit/JunitX)。

常用的断言方法

断言描述
void assertEquals([String message],
expected value, actual value)
断言两个值相等。值可能是类型有 int, short, long, byte,
char or java.lang.Object. 第一个参数是一个可选的字符串消息
void assertTrue([String message],
boolean condition)
断言一个条件为真
void assertFalse([String message],
boolean condition)
断言一个条件为假
void assertNotNull([String message],
java.lang.Object object)
断言一个对象不为空(null)
void assertNull([String message],
java.lang.Object object)
断言一个对象为空(null)
void assertSame([String message],
java.lang.Object expected,
java.lang.Object actual)
void assertSame([String message], java.lang.Object expected, java.lang.Object actual)
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual)断言,两个对象不是引用同一个对象
void assertArrayEquals([String message], expectedArray, resultArray)断言预期数组和结果数组相等。数组的类型可能是 int, long, short, char, byte or java.lang.Object.

测试断言效果

在之前的单元测试类中创建一个名为 testAssert 方法来查看断言效果

/**
 * 测试断言
 */
@Test
public void testAssert() {
    String obj1 = "junit";
    String obj2 = "junit";
    String obj3 = "test";
    String obj4 = "test";
    String obj5 = null;
    int var1 = 1;
    int var2 = 2;
    int[] arithmetic1 = {1, 2, 3};
    int[] arithmetic2 = {1, 2, 3};

    assertEquals(obj1, obj2);

    assertSame(obj3, obj4);

    assertNotSame(obj2, obj4);

    assertNotNull(obj1);

    assertNull(obj5);

    assertTrue("为真", var1 == var2);

    assertArrayEquals(arithmetic1, arithmetic2);
}
### JUnit 断言的用法与示例 JUnit 是一种广泛使用的 Java 测试框架,提供了多种断言方法来验证测试结果是否符合预期。以下是关于 JUnit 断言的一些核心概念及其具体实现。 #### 基本断言方法 JUnit 提供了一系列静态方法用于执行断言操作,这些方法通常位于 `org.junit.jupiter.api.Assertions` 类中[^1]。下面是一些常用的断言方法: - **assertEquals(expected, actual)** 验证两个对象或基本类型的值是否相等。如果它们不相等,则抛出异常并终止当前测试。 ```java assertEquals(4, 2 + 2); // 正确 ``` - **assertNotEquals(unexpected, actual)** 验证实际值是否不同于某个特定值。 ```java assertNotEquals(5, 2 + 2); // 正确 ``` - **assertTrue(condition)** 和 **assertFalse(condition)** 分别用来验证条件表达式的布尔值是否为真或假。 ```java assertTrue(2 + 2 == 4); // 正确 assertFalse(2 + 2 != 4); // 正确 ``` - ** assertNull(object)** 和 ** assertNotNull(object)** 用于判断对象是否为空或非空。 ```java String nullString = null; assertNull(nullString); // 正确 String nonNullString = "Hello"; assertNotNull(nonNullString); // 正确 ``` #### 复杂断言支持 除了基础功能外,JUnit 还允许开发者通过自定义消息增强错误报告能力。这可以通过向断言方法传递额外参数完成: ```java int result = 3 * 7; assertEquals(21, result, "Multiplication failed"); // 如果失败会显示指定的消息 ``` 对于更复杂的场景,可以利用 Lambda 表达式或者第三方库(如 AssertJ 或 Hamcrest)扩展断言逻辑[^2]。例如,在某些情况下可能需要比较集合的内容而不关心顺序差异;此时可借助工具类简化处理流程。 #### 实际应用案例 假设我们有一个简单的加法函数如下所示: ```java public class MathUtils { public static int add(int a, int b) { return a + b; } } ``` 为了确保该方法行为正常,我们可以编写相应的单元测试代码片段如下: ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class MathUtilsTest { @Test void testAdd() { int sum = MathUtils.add(3, 4); assertEquals(7, sum); try { MathUtils.add(Integer.MAX_VALUE, 1); } catch (ArithmeticException e) { fail("Should not throw exception for valid inputs"); } Exception exception = assertThrows(ArithmeticException.class, () -> { MathUtils.add(-10, Integer.MIN_VALUE); }); assertEquals("Overflow occurred", exception.getMessage()); } } ``` 以上展示了如何运用不同种类的断言覆盖各种边界情况下的输入输出校验过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真香号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值