Junit Assert と AssertEquals の例

⚡ スマートサマリー

JUnit Assert と AssertEquals は、期待値と実際値を比較することで、テストケースの合否を判定します。この資料では、org.junit.Assert が提供する assert メソッド(ブール値、null、同一性、等価性、配列のアサーションなど)について、完全な動作例を交えて解説します。

  • 目的: org.junit.Assert の assert メソッドは、条件を検証し、テストの失敗を検出します。
  • 🔢 メソッドの種類: ブール値、null値、同一性、等価性、配列等価性、および失敗メッセージなどのアサーションは、一般的なチェックを網羅しています。
  • 🟰 assertEquals: equals() メソッドを使用して値を比較し、ラップします。ping まずプリミティブ型をオブジェクト型に変換する。
  • 🔬 浮動小数点: float型またはdouble型の値を比較する際には、デルタ許容値が必要です。
  • 🧪 例: テストクラスとテストランナーは、すべての重要なassert文がtrueを返すことを示しています。

JUnit AssertとAssertEquals

Junit Assert とは何ですか?

Assert は、テストケースの合格または不合格を判定するのに役立つメソッドです。assert メソッドは、java.lang.Object クラスを継承する org.junit.Assert クラスによって提供されます。

アサーションには、ブール値、ヌル値、同一性など、さまざまな種類があります。

JUnit Assert という名前のクラスを提供し、テストケースの作成やテストの失敗の検出に役立つ多数のアサーションメソッドを提供します。

Assert メソッドはクラスによって提供されます。 org.junit.アサートこれは、 java.lang.Object とに提供されます。

JUnit アサートメソッド

ブーリアン

ブール条件(真または偽)をテストしたい場合は、次のアサートメソッドを使用できます。

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

ここでの条件はブール値です。

ヌルオブジェクト

オブジェクト/変数の初期値を確認する場合は、次の方法があります。

  1. アサートNull(オブジェクト)
  2. assertNotNull(オブジェクト)

ここでオブジェクトは Java オブジェクト、 例えば アサートNull(実際の);

同じ

オブジェクトが同一かどうかを確認したい場合(つまり、同じオブジェクトへの 2 つの参照を比較する場合) Java オブジェクト)または異なる:

  1. assertSame(期待値、実際値) — 次の場合はtrueを返します 予想される == 実際の.
  2. assertNotSame(期待値、実際)

等しいとアサート

2つのオブジェクトの等価性をテストしたい場合は、次の方法を使用できます。

  • assertEquals(期待値、実際値)

次の場合は true を返します expected.equals(Actual) trueを返します。

配列が等しいとアサート

配列の等価性をテストしたい場合は、次の方法があります。

  • assertArrayEquals(期待値、実際値)

配列の長さが同じ場合は、上記の方法を使用する必要があります。各有効な値に対して i、以下のようにして確認できます。

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

失敗メッセージ

アサーションエラーをスローしたい場合は、 失敗()これは常に不合格という結果に終わる。

  • 失敗(メッセージ)

アサーションメソッドには、 String 最初のパラメータとしてパラメータを指定します。アサーションが失敗した場合、この文字列が失敗メッセージに追加されます。例: 失敗(メッセージ) として仮定してみると、次のような式に表せます。

  • assertEquals(message, expected, actual)

JUnit アサートイコール

我が国は残り assertEquals(a, b)、に依存しています 等しい() オブジェクトクラスのメソッド。

  • ここでは次のように評価されます a.equals(b).
  • ここでは、テスト対象のクラスを使用して、適切な等価関係が決定されます。
  • クラスがオーバーライドしない場合、 等しい() の方法 オブジェクト クラスでは、デフォルトの動作を取得します。 等しい() メソッド、つまりオブジェクトの同一性。

If a (NAIST) と b のようなプリミティブです バイト, int型, booleanなどの場合、assertEquals(a, b) に対して次の処理が行われます。

a (NAIST) と b 同等のラッパー オブジェクト タイプ (バイト、整数、ブール値、など)、そして a.equals(b) 評価されます。

例えば、以下の文字列が同じ値を持つと仮定し、assertEqualsを使ってテストしてみましょう。

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

上記の assert 文は、obj1.equals(obj2) が true を返すため、true を返します。

浮動小数点アサーション

浮動小数点型を比較したい場合 (例: or フロート)、追加の必須パラメータが必要です。 デルタ浮動小数点比較を行う際に発生する丸め誤差の問題を回避するため。

アサーションは次のように評価されます。

  • Math.abs(期待値 – 実際値) <= デルタ

具体的な例を挙げますと、以下の通りです。

assertEquals(aDouble価値、もう一つDouble値、0.001)

JUnit アサートの例

以下の例は、条件をアサートする方法を示しています。 JUnit メソッドをアサートします。

シンプルなテストクラスを作成しましょう。 Junit4アサーションテスト.java そしてテストランナークラス テストランナー.java.

いくつかの変数と重要なアサート文を作成します JUnit.

この例では、TestRunner.javaを使用してテストクラスを実行します。

ステップ1) すべての重要な assert ステートメント メソッドを網羅するクラスを作成しましょう。 JUnit:

Junit4アサーションテスト.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) 期待される出力を段階的に分析してみましょう。すべてのassert文を一つずつ見ていきます。

  1. assertEquals(string1, string2);

次に、string1=”Junit” と string2=”Junit” を Object クラスの equals メソッドで比較します。assertEquals メソッドを java.lang.Object.equals() メソッドに置き換えます。

string1.equals(string2) => true を返します

したがって、assertEquals(string1, string2) は以下を返します true.

  1. assertSame(string3, string4);

「assertSame()」機能は、2 つのオブジェクトが同じオブジェクトを参照しているかどうかを確認するものです。string3=”test” と string4=”test” なので、string3 と string4 は同じ型です。したがって、assertSame(string3, string4) は、 true.

  1. assertNotSame(string1, string3);

「assertNotSame()」機能は、2つのオブジェクトが同じオブジェクトを参照していないことを確認するためのものです。string1=”Junit”とstring3=”test”の場合、string1とstring3はどちらも異なる型なので、assertNotSame(string1, string3)はtrueを返します。 true.

  1. アサートノットヌル(文字列1);

「assertNotNull()」機能は、オブジェクトがnullでないことを確認するためのものです。string1=”Junit”はnullでない値なので、assertNotNull(string1)はnullを返します。 true.

  1. アサートNull(string5);

「assertNull()」機能は、オブジェクトがnullであるかどうかを確認するためのものです。string5=null(null値)なので、assertNull(string5)はnullを返します。 true.

  1. assertTrue(variable1 < variable2);

「assertTrue()」機能は、条件が真であるかどうかを確認するものです。variable1=1、variable2=2なので、variable1 < variable2 という条件が真であることがわかり、assertTrue(variable1 < variable2) は を返します。 true.

  1. assertArrayEquals(airethematicArrary1, airethematicArrary2);

「assertArrayEquals()」機能は、期待される配列と結果の配列が等しいかどうかをチェックします。配列の型は、int、long、short、char、byte、またはjava.lang.Objectです。airethematicArrary1 = { 1, 2, 3 } および airethematicArrary2 = { 1, 2, 3 } は両方の配列が等しいことを示しているため、assertArrayEquals(airethematicArrary1, airethematicArrary2) は を返します。 true.

7 つのアサート文すべてが Junit4アサーションテスト.java このクラスが true を返すと、テスト assert クラスを実行すると、テストが成功したことが返されます (以下の出力を参照)。

ステップ4) Junit4AssertionTest.java を右クリックして、[実行] をクリックします。 JUnit。以下のような出力が表示されます。

JUnit アサートの例

上記の出力は、予想どおりテストが成功したことを示しています。

よくあるご質問

はい。AIアシスタントは、メソッドの期待される動作に基づいて、assertEquals、assertTrueなどのアサーションを生成できます。ただし、テストが意味のあるものとなるよう、期待値とエッジケースを必ず確認してください。

はい。AIは、比較対象に基づいて、assertEquals、assertSame、assertArrayEqualsのどれを使うべきかを提案できます。これにより、値を比較したいのに参照をチェックしてしまうといったよくあるミスを減らすことができます。

assertEquals は equals() メソッドを使用して値の等価性をチェックします。assertSame は、2 つの参照がメモリ内のまったく同じオブジェクトを指していることをチェックします。値が等しい 2 つのオブジェクトでも assertSame が失敗する場合があります。

アサーションが失敗した場合、 JUnit AssertionError をスローし、テストを失敗としてマークし、テストのデバッグに役立つように、オプションのメッセージと期待値および実際値を報告します。