ホームページ  >  記事  >  Java  >  ホワイトボックス テスト フレームワーク (JUnit) の使用

ホワイトボックス テスト フレームワーク (JUnit) の使用

**
**オリジナル
2021-11-29 09:33:243522ブラウズ

Junit フレームワーク:

Junit は、オープンソースの Java 単体テスト フレームワークです。

今日は、junit5 を紹介します。junit5 は、Junit Platform、Junit Jupiter、および Junit Vintage を含む 3 つの異なるサブプロジェクト モジュールで構成されています。 Java 8以降に対応しています ここで使用するエディタはIntelliJ IDEAです 最終結果を確認するだけで、プロジェクト全体のメソッドインターフェースがスムーズかどうかが分かります。各単体テスト ケースは比較的独立しており、Junit によって開始され、自動的に呼び出されます。追加の呼び出しステートメントを追加する必要はありません。

テスト メソッドを追加、削除、ブロックしても、他のテスト メソッドには影響しません。

Junit は主にホワイト ボックス テストに使用されます。ホワイト ボックス テストの手順は次のとおりです:

1. テスト計画段階: テスト スケジュールを作成します。要求仕様。

2. テスト設計段階: コードの機能に応じて、基本的な機能テスト用のテスト ケースを手動で設計します。プログラミング命令に従って、ソフトウェア構造は分割され、特定の標準化された方法に従ってテスト ケースが設計されます。

3. テスト実行フェーズ: テスト ケースを入力し、テスト結果を取得します。

4. テスト概要ステージ: テスト結果をコードの予想結果と比較し、エラーの原因を分析し、エラーを見つけて解決します。

次に、内部のアノテーションを紹介します。

@Test: 属性を宣言せずにテスト メソッドを表します。

@ParameterizedTest: メソッドがテスト メソッドであることを示します。さらに、このアノテーションを使用すると、テスト メソッドを別の人を使用して複数回実行することもできます。

@RepeatedTest: このアノテーションを使用すると、テスト メソッドで繰り返し実行の回数をカスタマイズできます。

@TestFactory: メソッドがデータ駆動型の動的テスト データ ソースに基づいていることを示します。

@Displayname: テスト クラスまたはテスト メソッドのカスタム表示名を宣言します。

@BeforeEach: 各テスト メソッドが実行される前に、指定されたメソッドが実行されることを示します。

@AfterEach: 各テスト メソッドの実行後に、指定されたメソッドが実行されることを示します。

@BeforeAll: 現在のクラスのすべてのテスト メソッドの前に実行され、このメソッドには初期化コードが含まれる場合があります。

@AfterAll: 現在のクラスのすべてのテスト メソッドの後に実行されます。

@Disabled: テスト クラスまたはメソッドが無効であることを示します。

アサーション:

失敗: アサーション テストが失敗しました。

AssertTrue/asserFalse: true または false をアサートします。

AssertNull/assertNotNull: Assert が null であるか、null ではありません。

assertEquals/assertNotEquals: 2 つの値が等しくないことをアサートします。

AssertArrayEquals: すべての配列要素が同じであることをアサートします。

AssertSame/assertNotSame: 2 つのオブジェクトが同じかどうかをアサートします。

AssertThrows/assertDoesNotThrow: 例外がスローされたかどうかをアサートします。

AssertAll: 複数の条件が満たされていることをアサートします;

次に、クラスを作成し、いくつかのメソッドを作成します:

package test;//包机制
import java.lang.reflect.Array;
public class MixedOperation {
    public int mixeOperation(int x,int y){
        return division((x+y),y);
    }
    public int division(int x,int y){
        int result=(x/y);
        return result;
    }
    public static void main(String[] args) {
      MixedOperation mixedOperation=new MixedOperation();
      System.out.println(mixedOperation.mixeOperation(5,1));
    }
}

MixedOperation という名前のクラスを作成します;

package test;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
public class MixedOperationTest {
    private MixedOperation mixedOperation;
    @BeforeEach
    public void init(){
      mixedOperation=new MixedOperation();
    }
    @Test
    public void successTest(){
        System.out.println("run a test:x=4,y=2");
        int result=mixedOperation.mixeOperation(4,2);
        Assertions.assertEquals(3,result);
    }
   /* @DisplayName("失败")
    public void errorTest(){`
        System.out.println("run a test:x=4,y=0");
        ArithmeticException exception=new ArithmeticException(
                ArithmeticException.class -> {
            mixedOperation.mixeOperation(4, 0);
        }
        );
    }*/
    @Disabled("参数")
    @Test
    @DisplayName("参数")
    @ParameterizedTest
    @CsvSource({"6,3,3","5,2,3","6,2,4"})
    public void caTest(int x,int y,int excepted){
        System.out.println("run a test :x="+x+"y="+y);
        System.out.println(excepted);
        int t= mixedOperation.mixeOperation(x,y);
        Assertions.assertEquals(excepted,t);
    }
    @Disabled
    @Test
    public void  Next(){
       System.out.println("抛出一个异常");
       System.out.println(Assertions.assertThrows(IllegalArgumentException.class, () ->mixedOperation.mixeOperation(2,0)));
    }
    @Disabled
    @Test
    void error(){
        Assertions.assertThrows(Exception.class,()->{Assertions.assertEquals(1,0);});
    }
    @Test
    void sure(){
        int result=mixedOperation.mixeOperation(4,2);
        Assertions.assertTrue(3==result);//断言相等
    }
}

これは、MixedOperationTest という名前で作成したテスト クラスです。

関連する推奨事項: 「java ビデオ チュートリアル

以上がホワイトボックス テスト フレームワーク (JUnit) の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。