当前位置: 首页 > 教程 > Junit4 >

Junit4 断言常见方法

精华
小牛编辑
176浏览
2023-03-14

1 概述

在本文中,我们将学习JUnit 4中所有可用的Assert语句 。
这些断言可用于所有 基本类型,对象和数组(基本或对象)。
断言中的参数order是期望值,后跟实际值;可选地,第一个参数可以是代表已评估条件的消息输出的String消息。

2. JUnit 4断言与示例

方法 描述

void assertArrayEquals([String message], expectedArray, resultArray)

断言预期数组和结果数组相等。数组的类型可能是 int, long, short, char, byte or java.lang.Object.

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 assertNull([String message], java.lang.Object object)

断言一个对象为空(null)

void assertNotNull([String message], java.lang.Object object)

断言一个对象不为空(null)

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 Assert.fail(String message)

断言一个条件失败

JUnit 4中可用的Assert语句列表。

让我们用一个例子讨论每个断言。
让我们从assertEquals一开始。

2.1 assertEquals方法

assertEquals断言验证期望值和实际值是否相等:
/**
 * 小牛知识库网: https://www.xnip.cn
 */
@Test
public void whenAssertingEquality_thenEqual() {
    String expected = "Ramesh";
    String actual = "Ramesh"; 
    assertEquals(expected, actual);
}

还可以指定断言失败时显示的消息:

assertEquals("failure - strings are not equal", expected, actual);

2.2 assertArrayEquals方法

如果要断言两个数组相等,则可以使用assertArrayEquals:
/**
 * 小牛知识库网: https://www.xnip.cn
 */
@Test
public void whenAssertingArraysEquality_thenEqual() {
    char[] expected = {'J','u','n','i','t'};
    char[] actual = "Junit".toCharArray();
     
    assertArrayEquals(expected, actual);
}

如果两个数组都为空,则断言将认为它们相等:

/**
 * 小牛知识库网: https://www.xnip.cn
 */
@Test
public void givenNullArrays_whenAssertingArraysEquality_thenEqual() {
    int[] expected = null;
    int[] actual = null;
 
    assertArrayEquals(expected, actual);
}

2.3 assertNotNull和assertNull方法

当我们想测试一个对象是否为空时,我们可以使用assertNull断言:
/**
 * 小牛知识库网: https://www.xnip.cn
 */
@Test
public void whenAssertingNull_thenTrue() {
    Object car = null;
     
    assertNull("The car should be null", car);
}

相反,如果我们要断言一个对象不应该为null,则可以使用assertNotNull断言。

2.4 assertNotSame和assertSame方法

使用assertNotSame,可以验证两个变量是否未引用同一对象:
@Test
public void whenAssertingNotSameObject_thenDifferent() {
    Object cat = new Object();
    Object dog = new Object();
 
    assertNotSame(cat, dog);
}

否则,当我们要验证两个变量引用同一对象时,可以使用assertSame断言。

2.5 assertTrue和assertFalse方法

如果我们想验证某个条件是真还是假,我们可以分别使用assertTrue断言或assertFalse一个断言:
@Test
public void whenAssertingConditions_thenVerified() {
    assertTrue("5 is greater then 4", 5 > 4);
    assertFalse("5 is not greater then 6", 5 > 6);
}

2.6 fail

失败声明会导致抛出AssertionFailedError的测试失败。它可以用来验证是否抛出了实际的异常,或者当我们想要使测试在开发过程中失败时。
让我们看看如何在第一种情况下使用它:
@Test
public void whenCheckingExceptionMessage_thenEqual() {
    try {
        methodThatShouldThrowException();
        fail("Exception not thrown");
    } catch (UnsupportedOperationException e) {
        assertEquals("Operation Not Supported", e.getMessage());
    }
}

2.7 assertThat方法

assertThat断言是JUnit 4中唯一与其他断言相比具有相反顺序参数的断言。
在这种情况下,该断言具有可选的失败消息,实际值和Matcher对象。
让我们看看如何使用此断言来检查数组是否包含特定值:
@Test
public void testAssertThatHasItems() {
    assertThat(
      Arrays.asList("Java", "Kotlin", "Scala"), 
      hasItems("Java", "Kotlin"));
}

3 结论

在本文中,我们通过示例学习了JUnit 4断言。 这些断言可用于所有基本类型,对象和数组(基本或对象)。