Java
 Computer >> コンピューター >  >> プログラミング >> Java

例を使用したJUnit5アノテーション

JUnit 5 次世代のJUnitです。目標は、JVMでの開発者側のテストのための最新の基盤を作成することです。これには、Java 8以降に焦点を当てるだけでなく、さまざまなスタイルのテストを有効にすることも含まれます。

MavenとGradleの両方を使用できます。

Mavenを使用している場合は、次の依存関係をpom.xmlに追加する必要があります。 ファイル:

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.3.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>5.3.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

@JUnit5アノテーション

Junit 5での最も明らかな変更の1つは、テストクラスとメソッドを公開する必要がなくなったことです。

それでは、最も一般的なJUnit5アノテーションのリストを見ていきましょう。

@Test

このアノテーションは、メソッドがテストメソッドであることを示します。このアノテーションは属性をとらないことに注意してください。

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

class JUnit5Test {
        
    @Test
    void helloJUnit5() {
        assertEquals(10, 5+5);
    }
}

@ParameterizedTest

パラメータ化されたテストにより、異なる引数を使用してテストを複数回実行できます。通常の@Testと同じように宣言されます メソッドが、@ParameterizedTestを使用します 代わりに注釈。

さらに、各呼び出しの引数を提供するソースを少なくとも1つ宣言してから、テストメソッドで引数を使用する必要があります。

たとえば、次の例は、@ValueSourceを使用するパラメーター化されたテストを示しています。 引数のソースとして文字列配列を指定するための注釈。

例:

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import static org.junit.jupiter.api.Assertions.assertTrue;

class JUnit5Test {

    @ParameterizedTest
    @ValueSource(strings = { "cali", "bali", "dani" })
    void endsWithI(String str) {
        assertTrue(str.endsWith("i"));
    }
}

@RepeatedTest

JUnit 5には、メソッドに@RepeatedTestのアノテーションを付けるだけで、指定された回数だけテストを繰り返すことができます。 必要な繰り返しの総数を指定します。

繰り返されるテストを呼び出すたびに、通常の@Testの実行と同じように動作します。 メソッド。

これは、Seleniumを使用したUIテストで特に役立ちます。

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.RepetitionInfo;
import org.junit.jupiter.api.TestInfo;

import static org.junit.jupiter.api.Assertions.assertEquals;

class JUnit5Test {
    
    @RepeatedTest(value = 5, name = "{displayName} {currentRepetition}/{totalRepetitions}")
    @DisplayName("RepeatingTest")
    void customDisplayName(RepetitionInfo repInfo, TestInfo testInfo) {
        int i = 3;
        System.out.println(testInfo.getDisplayName() + 
            "-->" + repInfo.getCurrentRepetition()
        );
        
        assertEquals(repInfo.getCurrentRepetition(), i);
    }
}

例を使用したJUnit5アノテーション

テストの結果からわかるように、i==3 、テストは合格です。それ以外の場合は失敗します。

@DisplayName

テストクラスとテストメソッドは、テストランナーとテストレポートによって表示されるカスタム表示名を宣言できます。

例:

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;

@DisplayName("DisplayName Demo")
class JUnit5Test {
    @Test
    @DisplayName("Custom test name")
    void testWithDisplayName() {
    }

    @Test
    @DisplayName("Print test name")
    void printDisplayName(TestInfo testInfo) {
        System.out.println(testInfo.getDisplayName());
    }
}

@BeforeEach

@BeforeEach アノテーションは、JUnit4の@Beforeと同様に、アノテーションが付けられたメソッドを各テストメソッドの前に実行する必要があることを示します。 。

例:

import org.junit.jupiter.api.*;

class JUnit5Test {
    @BeforeEach
    void init(TestInfo testInfo) {
        String callingTest = testInfo.getTestMethod().get().getName();
        System.out.println(callingTest);
    }

    @Test
    void firstTest() {
        System.out.println(1);
    }

    @Test
    void secondTest() {
        System.out.println(2);
    }
}

出力:

firstTest
1
secondTest
2

@AfterEach

このアノテーションは、JUnit4の@Afterと同様に、アノテーションが付けられたメソッドを各テストメソッドの後に実行する必要があることを示します。 。たとえば、各テストの後にテストでプロパティをリセットする必要がある場合は、メソッドに@AfterEachでアノテーションを付けることができます。 そのタスクのために。

import org.junit.jupiter.api.*;

class JUnit5Test {

    @Test
    void firstTest() {
        System.out.println(1);
    }
    @Test
    void secondTest() {
        System.out.println(2);
    }

    @AfterEach
    void after(TestInfo testInfo) {
        String callingTest = testInfo.getTestMethod().get().getName();
        System.out.println(callingTest);
    }
}

出力:

1
firstTest
2
secondTest

@BeforeAll

このアノテーションは、すべてのテストの前にメソッドを実行します。これは、JUnit4の@BeforeClassに類似しています。 。 @BeforeAll アノテーションは通常、テストのさまざまなものを初期化するために使用されます。

例:

import org.junit.jupiter.api.*;

class JUnit5Test {

    @BeforeAll
    static void init() {
        System.out.println("Only run once before all tests");
    }

    @Test
    void firstTest() {
        System.out.println(1);
    }
    @Test
    void secondTest() {
        System.out.println(2);
    }
}

出力:

Only run once before all tests
1
2

@AfterAll

@AfterAll アノテーションは、すべてのテストが実行された後にのみ、アノテーション付きメソッドを実行するために使用されます。これは、JUnit4の@AfterClassに類似しています。 このアノテーションを使用して、すべてのテストの終了時にすべてのプロセスを破棄または終了します。

例:

import org.junit.jupiter.api.*;

class JUnit5Test {

    @Test
    void firstTest() {
        System.out.println(1);
    }
    @Test
    void secondTest() {
        System.out.println(2);
    }

    @AfterAll
    static void after() {
        System.out.println("Only run once after all tests");
    }
}

出力:

1
2
Only run once after all tests

@Tag

このアノテーションを使用して、クラスレベルまたはメソッドレベルで、フィルタリングテスト用のタグを宣言できます。

@Tag アノテーションは、選択したテストでテストパックを作成する場合に役立ちます。

例:

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

@Tag("smoke")
class JUnit5Test {

    @Test
    @Tag("login")
    void validLoginTest() {
    }

    @Test
    @Tag("search")
    void searchTest() {
    }
}

@Disabled

@Disabled アノテーションは、クラスまたはメソッドレベルでテストを無効化またはスキップするために使用されます。これは、JUnit4の@Ignoreに類似しています。 。

クラスレベルで宣言すると、すべての@test メソッドはスキップされます。 @Disabledを使用する場合 メソッドレベルでは、注釈付きメソッドのみが無効になります。

例:

@Disabled テストクラスを無効にするために使用されます:

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

@Disabled
class DisabledClassDemo {

    @Test
    void testWillBeSkipped() {
    }
}

例:

@Disabled テストメソッドを無効にするために使用されるアノテーション:

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

class DisabledTestsDemo {

    @Disabled
    @Test
    void testWillBeSkipped() {
    }

    @Test
    void testWillBeExecuted() {
    }
}

  1. LinuxFINDコマンドと例

    Linuxの新規インストールに含まれるファイルの数を知っていますか? PopOSを使用する場合!例としてLinuxディストリビューションには、31,000を超えるファイルがあります。それは、ドキュメントの作成、音楽の保存、PDFのダウンロード、または写真の整理を開始する前です。 このため、必要なときにLinuxで適切なファイルまたはフォルダーを見つけるのは困難です。この記事では、Linux FINDコマンドの使用方法を学び、可能な限りすべての例を紹介します。 LinuxFINDコマンド構文 構文とは、単語またはコマンドを組み合わせる方法を指します。単語をシャッフルするだけで通常の

  2. 例を使用したJavaArrayListメソッド

    この投稿では、最も一般的なJavaArrayListメソッドと各メソッドのコード例について説明します。 ArrayList classはサイズ変更可能な配列です。通常、ArrayListを使用します リストのサイズが事前にわからない場合。 ArrayList クラスはjava.utilにあります パッケージ。 ArrayListを作成する方法 ArrayListを作成してアイテムを追加するには、ArrayListをインスタンス化します。 Stringなどの指定されたタイプのオブジェクト またはInteger 。 add()に注意してください メソッドは、ArrayListの次の位置に項