JUnit【1】断言用法之assertEquals/True/False/ArrayEquals

本文介绍了JUnit测试框架中常用的断言方法,包括assertEquals用于比较预期值与实际值,assertTrue和assertFalse用于判断条件是否为真,以及ArrayEquals用于数组的比较。这些断言在进行单元测试时,对于确保代码正确性至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   前段时间去亚信面试,被问到写一个冒泡排序,心想这多新鲜,刷刷几下写好。面试官突然问,你怎么对这个程序进行单元测试?

   单元测试?!
   懵圈...
 
   单元测试
 
   代码是为了什么,当然是重复运行。你的程序主要是由一个个的 Class 组成的,一个类或一个对象当然也是一个单元,而比类更小的单元是类的方法(函式)。如果你的类中的基本单元——如某些方法不能正常工作,在某些输入条件下会得出错误的执行结果,那么如何保证你的类/对象乃至整个应用软件或系统作为一个整体能正常工作呢?所以,简单说,单元测试(优先)的目的就是首先保证一个系统的基本组成单元、模块(如对象以及对象中的方法)能正常工作,这是一种分而治之中的 bottom-up 思想。
   百度百科给出的单元测试的定义:http://baike.baidu.com/link?url=tBjOgVVmpid3gjdl4H_7FbqG5LAnjof7FYrL5thzI861kyumRwU8vS6HmSLUvB1pr0sfmj1O3UIJHGHEnlbWKlCPbej_hyKYA6Tqr4ZskhFjoixqsEQpVtNkjxy8awax
 
 工具

    对于java代码进行单元测试,我选用的是JUnit(推荐使用JUnit4)。
JUnit 在日常开发中还是很常用的,而且 Java 的各种 IDE (Eclipse、MyEclipse、IntelliJ IDEA)都集成了 JUnit 的组件。当然,自己添加插件也是很方便的。JUnit 框架是 Java 语言单元测试当前的一站式解决方案。这个框架值得称赞,因为它把测试驱动的开发思想介绍给 Java 开发人员并教给他们如何有效地编写单元测试。
 
  断言
 
  断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过。
  1)assertEquals()方法
  判断两个对象是否相等,并返回boolean,int等类型,前为期望值,后为输入值。
   assertEquals(返回值,Object expected,Object actual);
 
  2)assertTrue()/assertFalse()
   判断测试的对错,condition是期望,message是实际值。
   assertTrue(condition,message);
   或assertFalse(condition,message);
  
  3)assertArrayEquals()
  判断两个数组是否相等
  assertArrayEquals(a[],b[]);
 
  例子:
  (1)我于上午编写了一个三角形判定的代码,包含四个小函数,并用assertEquals()与assertTrue()/assertFalse()进行单元测试。
Triangle.java:
public class Triangle {
protected long lborderA = 0;
protected long lborderB = 0;
protected long lborderC = 0;
// Constructor
public Triangle(long lborderA, long lborderB, long lborderC) {
this.lborderA = lborderA;
this.lborderB = lborderB;
this.lborderC = lborderC;
}
/**
 * check if it is a triangle
 * 
 * @return true for triangle and false not
 */
public boolean isTriangle(Triangle triangle) {
boolean isTriangle = false;

// check boundary
if ((triangle.lborderA > 0 && triangle.lborderA <= Long.MAX_VALUE
### JUnit 断言用法 JUnit 是一种广泛应用于 Java 开发中的单元测试框架,其核心功能之一就是提供多种断言方法来验证程序的行为是否符合预期。以下是常见的断言方法及其具体用途: #### 1. `assertEquals(expected, actual)` 该方法用于比较两个对象或原始数据类型的值是否相等。如果两者不相等,则抛出异常并终止当前测试。 ```java import static org.junit.jupiter.api.Assertions.assertEquals; public class ExampleTest { @org.junit.jupiter.api.Test void testEquals() { int expected = 5; int actual = 2 + 3; assertEquals(expected, actual); // 验证实际结果等于期望值 [^1] } } ``` #### 2. `assertTrue(condition)` 此方法用来判断给定条件是否为真。如果不满足条件,则测试失败。 ```java import static org.junit.jupiter.api.Assertions.assertTrue; public class ExampleTest { @org.junit.jupiter.api.Test void testTrueCondition() { boolean condition = true; assertTrue(condition); // 如果条件为假则测试失败 } } ``` #### 3. `assertFalse(condition)` 类似于 `assertTrue` 方法,但它验证的是条件是否为假。 ```java import static org.junit.jupiter.api.Assertions.assertFalse; public class ExampleTest { @org.junit.jupiter.api.Test void testFalseCondition() { assertFalse(false); // 测试条件应为 false } } ``` #### 4. `assertNull(object)` 这个方法检查指定的对象是否为空引用。如果对象不是 null,则测试会失败。 ```java import static org.junit.jupiter.api.Assertions.assertNull; public class ExampleTest { @org.junit.jupiter.api.Test void testNullObject() { String object = null; assertNull(object); // 对象应该为 null } } ``` #### 5. ` assertNotNull(object)` 与 `assertNull` 相反,它确保传入的对象不是一个空引用。 ```java import static org.junit.jupiter.api.Assertions.assertNotNull; public class ExampleTest { @org.junit.jupiter.api.Test void testNotNullObject() { String object = "Not Null"; assertNotNull(object); // 确保对象不为 null } } ``` #### 6. `assertSame(expected, actual)` 和 `assertNotSame(unexpected, actual)` 这两个方法分别确认两个对象是否是同一个实例或者不同实例。 ```java import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertNotSame; public class ExampleTest { @org.junit.jupiter.api.Test void testSameInstance() { Object obj1 = new Object(); Object obj2 = obj1; // 同一实例 assertSame(obj1, obj2); // 验证两者的引用相同 Object obj3 = new Object(); // 不同实例 assertNotSame(obj1, obj3); // 验证两者的引用不同 } } ``` ### 总结 上述列举了一些最常使用的 JUnit 断言方法,并提供了相应的代码示例以便于理解它们的实际应用方式。这些断言对于保障软件质量至关重要,在日常开发过程中应当熟练掌握和运用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值