Junit Assert 和 AssertEquals 示例

⚡ 智能摘要

JUnit Assert 和 AssertEquals 通过比较预期值和实际值来确定测试用例的通过或失败状态。本资源解释了 org.junit.Assert 提供的 assert 方法,包括布尔值断言、空值断言、恒等断言、相等断言和数组断言,并提供了一个完整的示例。

  • 目的: org.junit.Assert 中的断言方法验证条件并检测测试失败。
  • 🔢 方法类型: 布尔值、空值、相同值、相等值、数组相等值和失败消息断言涵盖了常见的检查。
  • 🟰 assertEquals: 使用 equals() 方法比较值,包装ping 先将基本元素转换为对象。
  • 🔬 浮点: 比较浮点数或双精度浮点数时,需要设置增量容差。
  • 🧪 计费示例: 测试类和运行器演示了每个关键的断言语句都返回 true。

JUnit Assert 和 AssertEquals

什么是 Junit Assert?

断言(Assert)是一种用于确定测试用例通过或失败状态的方法。断言方法由 org.junit.Assert 类提供,该类继承自 java.lang.Object 类。

断言有多种类型,例如布尔断言、空值断言、相同断言等。

JUnit 提供了一个名为 Assert 的类,该类提供了一系列断言方法,这些方法在编写测试用例和检测测试失败时非常有用。

断言方法由类提供 断言这扩展了 对象 类。

JUnit 断言方法

布尔

如果要测试布尔条件(真或假),可以使用以下断言方法:

  1. assertTrue(条件)
  2. assertFalse(条件)

这里的条件是一个布尔值。

空对象

如果要检查对象/变量的初始值,可以使用以下方法:

  1. assertNull(对象)
  2. 断言NotNull(对象)

这里的对象是一个 Java 宾语, 例如 断言Null(实际);

相同

如果您想检查对象是否相同(即,比较对同一个对象的两个引用), Java 对象)或不同:

  1. assertSame(expected, actual) — 如果 预期 == 实际.
  2. assertNotSame(预期,实际)

断言相等

如果要测试两个对象是否相等,可以使用以下方法:

  • assertEquals(预期,实际)

如果发生以下情况则返回 true 预期值等于实际值 返回true。

断言数组相等

如果要测试数组是否相等,可以使用以下方法:

  • assertArrayEquals(预期,实际)

如果数组长度相同,则必须使用上述方法。对于每个有效值 i,您可以按如下所示进行检查:

  • assertEquals(expected[i], actual[i])
  • assertArrayEquals(expected[i], actual[i])

失败信息

如果你想抛出任何断言错误,你可以 失败()这总是导致失败的判决。

  • 失败(消息);

你可以有一个带有附加信息的断言方法。 将参数作为第一个参数。如果断言失败,此字符串将附加到失败消息中。例如: 失败(消息) 可以写成:

  • assertEquals(message, expected, actual)

JUnit 断言等于

你有 assertEquals(a, b),它依赖于 等于 () Object 类的方法。

  • 这里将其评估为 a.等于(b).
  • 这里使用被测试的类来确定合适的相等关系。
  • 如果一个类没有覆盖 等于 () 的方法 摆件 类,它将获得该类的默认行为。 等于 () 方法,即对象标识。

If ab 是诸如 字节, INT, 布尔等等,然后对于 assertEquals(a, b) 将执行以下操作:

ab 将转换为其等效的包装器对象类型(字节、整数、布尔值等),然后 a.等于(b) 将被评估。

例如,考虑下面提到的两个具有相同值的字符串;让我们使用 assertEquals 来测试它们:

String obj1 = "Junit";
String obj2 = "Junit";
assertEquals(obj1, obj2);

上述断言语句将返回 true,因为 obj1.equals(obj2) 返回 true。

浮点断言

当您想要比较浮点类型时(例如, 翻番 or 浮动),您还需要一个额外的必填参数, 三角洲为了避免在进行浮点数比较时出现舍入误差问题。

该断言的评估结果如下:

  • Math.abs(预期值 – 实际值) <= delta

例如:

assertEquals(aDouble价值,另一个Double值,0.001)

JUnit 断言示例

以下示例演示了如何使用断言来判断条件。 JUnit 断言方法。

让我们创建一个名为“简单测试类”的类 Junit4AssertionTest.java 以及一个测试运行器类 测试运行器.java.

您将创建一些变量和重要的断言语句。 JUnit.

在这个例子中,你将使用 TestRunner.java 来执行我们的测试类。

步骤1) 让我们创建一个类,涵盖所有重要的 assert 语句方法。 JUnit:

Junit4AssertionTest.java

package guru99.junit;

import static org.junit.Assert.*;
import org.junit.Test;

public class Junit4AssertionTest {

    @Test
    public void testAssert() {

        // Variable declaration
        String string1 = "Junit";
        String string2 = "Junit";
        String string3 = "test";
        String string4 = "test";
        String string5 = null;
        int variable1 = 1;
        int variable2 = 2;
        int[] airethematicArrary1 = { 1, 2, 3 };
        int[] airethematicArrary2 = { 1, 2, 3 };

        // Assert statements
        assertEquals(string1, string2);
        assertSame(string3, string4);
        assertNotSame(string1, string3);
        assertNotNull(string1);
        assertNull(string5);
        assertTrue(variable1 < variable2);
        assertArrayEquals(airethematicArrary1, airethematicArrary2);
    }
}

步骤2) 您需要创建一个测试运行器类来执行上述类:

测试运行器.java

package guru99.junit;

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {
    public static void main(String[] args) {
        Result result = JUnitCore.runClasses(Junit4AssertionTest.class);
        for (Failure failure : result.getFailures()) {
            System.out.println(failure.toString());
        }
        System.out.println("Result==" + result.wasSuccessful());
    }
}

步骤3) 让我们逐步分析预期输出。逐一考虑所有断言语句:

  1. assertEquals(string1, string2);

现在使用 Object 类的 equals 方法比较 string1=”Junit” 和 string2=”Junit”。将 assertEquals 方法替换为 java.lang.Object.equals() 方法:

string1.equals(string2) => 返回 true

因此 assertEquals(string1, string2) 将返回 true.

  1. 断言相同(字符串3,字符串4);

`assertSame()` 函数用于检查两个对象是否指向同一个对象。由于 string3=”test” 和 string4=”test”,它们属于同一类型,因此 `assertSame(string3, string4)` 将返回 true。 true.

  1. 断言不相同(字符串1,字符串3);

`assertNotSame()` 函数用于检查两个对象是否指向同一个对象。由于 string1=”Junit” 和 string3=”test”,两者类型不同,因此 `assertNotSame(string1, string3)` 将返回 false。 true.

  1. 断言NotNull(string1);

“assertNotNull()”函数用于检查对象是否为空。由于string1=”Junit”是一个非空值,因此assertNotNull(string1)将返回true。 true.

  1. 断言Null(string5);

“assertNull()”函数用于检查对象是否为空。由于string5=null,即值为null,因此assertNull(string5)将返回null。 true.

  1. assertTrue(variable1 < variable2);

“assertTrue()”函数用于检查某个条件是否为真。由于 variable1=1 且 variable2=2,表明 variable1 < variable2 的条件为真,因此 assertTrue(variable1 < variable2) 将返回真。 true.

  1. 声明ArrayEquals(airethematicArrary1,airethematicArrary2);

`assertArrayEquals()` 函数用于检查预期数组和结果数组是否相等。数组类型可以是 int、long、short、char、byte 或 java.lang.Object。由于 `airethematicArrary1 = { 1, 2, 3 }` 和 `airethematicArrary2 = { 1, 2, 3 }`,表明两个数组相等,因此 `assertArrayEquals(airethematicArrary1, airethematicArrary2)` 将返回 `true`。 true.

由于所有七个断言陈述 Junit4AssertionTest.java 当执行测试断言类时,该类将返回 true,并返回测试成功(见下方输出)。

步骤4) 右键单击 Junit4AssertionTest.java,然后单击“运行方式”-> JUnit. 您将看到如下所示的输出:

JUnit 断言示例

以上输出结果显示测试成功,符合预期。

常见问题

是的。AI 助手可以根据方法的预期行为生成 assertEquals、assertTrue 和其他断言。但您仍然需要检查预期值和边界情况,以确保测试有意义。

是的。AI 可以根据你比较的对象,建议使用 assertEquals、assertSame 还是 assertArrayEquals。这可以减少一些常见错误,例如本想比较值却检查了引用。

assertEquals 使用 equals() 方法检查值是否相等。assertSame 检查两个引用是否指向内存中的同一个对象。两个值相等的对象可能会使 assertSame 失败。

当断言失败时, JUnit 抛出 AssertionError 异常,将测试标记为失败,并报告可选消息以及预期值和实际值,以帮助您调试测试。

总结一下这篇文章: