Junit 中的各种断言


 JUnit为我们提供了一些辅助函数,他们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,把这些辅助函数称为断言。下面我们来介绍一下JUnit的各种断言。

   1、assertEquals

  函数原型1:assertEquals([String message],expected,actual)

参数说明:

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

  expected是期望值,通常都是用户指定的内容。

actual是被测试的代码返回的实际值。

例:assertEquals("equals","1","1");

  函数原型2:assertEquals([String message],expected,actual,tolerance)

参数说明:

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

  expected是期望值,通常都是用户指定的内容。

  actual是被测试的代码返回的实际值。

  tolerance是误差参数,参加比较的两个浮点数在这个误差之内则会被认为是

  相等的。

  例:assertEquals ("yes",5.8,11.0/2.0,0.5);

  2、assertTrue

   函数原型:assertTrue ([String message],Boolean condition)

   参数说明:

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

       condition是待验证的布尔型值。

   该断言用来验证给定的布尔型值是否为真,假如结果为假,则验证失败。当然,更有验证为假的测试条件:

          函数原型:assertFalse([String message],Boolean condition)

          该断言用来验证给定的布尔型值是否为假,假如结果为真,则验证失败。

       例: assertTrue("true",1==1);

              assertFalse("false",2==1);

  3、assertNull

  函数原型:assertNull([String message],Object object)

参数说明:

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

  object是待验证的对象。

  该断言用来验证给定的对象是否为null,假如不为null,则验证失败。相应地,还存在能够验证非null的断言:

  函数原型:assertNotNull([String message],Object object)

该断言用来验证给定的对象是否为非null,假如为null,则验证失败。

例:assertNull("null",null);

       assertNotNull("not null",new String());

  4、assertSame

  函数原型:assertSame ([String message], expected,actual)

参数说明:

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

  expected是期望值。

  actual是被测试的代码返回的实际值。

  该断言用来验证expected参数和actual参数所引用的是否是同一个对象,假如不是,则验证失败。相应地,也存在验证不是同一个对象的断言:

  函数原型:assertNotSame ([String message], expected,actual)

该断言用来验证expected参数和actual参数所引用的是否是不同对象,假如所引用的对象相同,则验证失败。

例:assertSame("same",2,4-2);

        assertNotSame("not same",2,4-3);

  5、Fail

  函数原型:Fail([String message])

参数说明:

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

  该断言会使测试立即失败,通常用在测试不能达到的分支上(如异常)。

### 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值