TestNG 中 assertEquals() 和 assertTrue() 的區別是什麼


TestNG 支援 Assertion 類,用於驗證。assertTrue() 和 assertEquals() 是該類的支援函式。

assertEquals()

此函式用於斷言兩個資料值是否相等。可以使用的資料型別包括字串、整數、布林值等。使用者應確保這兩個值的資料型別相同,否則會丟擲異常。

語法為

assertEquals(actual, expected)

它接受兩個引數:actual 和 expected,用於斷言值。

當給定的兩個資料相同時,斷言會透過,沒有任何異常。但是,如果兩個資料不相等,則會丟擲錯誤。

assertTrue()

此函式用於斷言給定的布林條件是否為真。它接受返回布林值的表示式。如果布林條件為真,則透過,否則會丟擲錯誤。

語法為

assertTrue(Boolean_condition)

它僅接受返回真或假的表示式。

區別

在實際場景中,使用者可以使用任何一個斷言進行驗證。

例如:如果使用者想要驗證兩個字串變數的值,可以使用任何一個。

Assert.assertEquals(a,b)

或者

Assert.assertTrue(a.equals(b))

  • 如果 a 和 b 相同,我們在這兩個斷言中不會發現任何差異,但是當出現錯誤或這兩個變數不相等時,我們可以在錯誤訊息中注意到差異。

    assertEquals() 丟擲關於異常的清晰訊息,如下所示

    java.lang.AssertionError: expected [2] but found [1]

    預期:2

    實際:1

    assertTrue() 丟擲關於異常的錯誤訊息,但並不清晰,如下所示

    java.lang.AssertionError: expected [true] but found [false]

    預期:true

    實際:false

  • assertEquals 是空安全的,而 assertTrue 不是空安全的,即在比較兩個值時,我們可以將空值傳遞給 assertEquals,但不能將空值傳遞給 assertTrue。

示例

以下程式碼適用於常見的 TestNG 類 - OrderofTestExecutionInTestNG:

src/ OrderofTestExecutionInTestNG.java

import org.testng.Assert;
import org.testng.annotations.*;

public class OrderofTestExecutionInTestNG {

    // test case 1
    @Test()
    public void testCase1() {

        System.out.println("in test case 1 for assertEqulas as passed");
        Assert.assertEquals(1,1);
    }
    // test case 2
    @Test
    public void testCase2() {

        System.out.println("in test case 2 for assertTrue as passed");
        Assert.assertTrue("1".equals("1"));
    }
    @Test()
    public void testCase3() {

        System.out.println("in test case 3 for assertEqulas as failed");
        Assert.assertEquals(1,2);
    }
    // test case 4
    @Test
    public void testCase4() {

        System.out.println("in test case 4 for assertTrue as failed");
        Assert.assertTrue("1".equals("2"));
    }

} 

testng.xml

這是一個配置檔案,用於組織和執行 TestNG 測試用例。

當只需要執行有限的測試而不是完整的套件時,它非常方便。

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1" >
    <test name = "test1">
        <classes>
            <class name = "OrderofTestExecutionInTestNG"/>
        </classes>
    </test>
</suite>

輸出

in test case 1 for assertEqulas as passed
in test case 2 for assertTrue as passed
in test case 3 for assertEqulas as failed

java.lang.AssertionError: expected [2] but found [1]
Expected :2
Actual   :1

in test case 4 for assertTrue as failed

java.lang.AssertionError: expected [true] but found [false]
Expected :true
Actual   :false

===============================================
Suite1
Total tests run: 4, Passes: 2, Failures: 2, Skips: 0
=============================================== 

更新於: 2023-08-21

1K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.