Java >> Java チュートリアル >  >> Tag >> assert

オブジェクトが特定の型からのものであることをアサートする

1.概要

この記事では、オブジェクトが特定の型であることを確認する方法について説明します。さまざまなテスト ライブラリと、それらがオブジェクト タイプをアサートするために提供するメソッドを見ていきます。

これを行う必要があるシナリオはさまざまです。一般的なのは、インターフェイスをメソッドの戻り値の型として利用するが、返される特定のオブジェクトに応じて、さまざまな操作を実行したい場合です。 単体テストは判断に役立ちます 返されたオブジェクトが期待するクラスを持っているかどうか

2.シナリオ例

冬の間に葉を失うかどうかに従って木を分類していると想像してみましょう。 Evergreen という 2 つのクラスがあります および 落葉樹 両方とも Tree を実装しています インターフェイス ツリーの名前に従って正しいタイプを返す単純なソーターがあります:

Tree sortTree(String name) {

    List<String> deciduous = List.of("Beech", "Birch", "Ash", "Whitebeam", "Hornbeam", "Hazel & Willow");
    List<String> evergreen = List.of("Cedar", "Holly", "Laurel", "Olive", "Pine");

    if (deciduous.contains(name)) {
        return new Deciduous(name);
    } else if (evergreen.contains(name)) {
        return new Evergreen(name);
    } else {
        throw new RuntimeException("Tree could not be classified");
    }
}

どのタイプの Tree かをテストする方法を調べてみましょう

2.1. JUnit5 でのテスト

JUnit5 を使用する場合は、assertEquals を使用して、オブジェクトのクラスがテスト対象のクラスと等しいかどうかを確認できます。 メソッド :

@Test
public void sortTreeShouldReturnEvergreen_WhenPineIsPassed() {
    Tree tree = tested.sortTree("Pine");
    assertEquals(tree.getClass(), Evergreen.class);
}

2.2. Hamcrest でのテスト

Hamcrest ライブラリを使用する場合、assertThat と instanceOf を使用できます メソッド :

@Test
public void sortTreeShouldReturnEvergreen_WhenPineIsPassed() {
Tree tree = tested.sortTree("Pine");
assertThat(tree, instanceOf(Evergreen.class));
}

org.hamcrest.Matchers.isA でインポートするときに使用できるショートカット バージョンがあります。 :

assertThat(tree, isA(Evergreen.class));

2.3. AssertJ によるテスト

AssertJ Core ライブラリの isExactlyInstanceOf も使用できます メソッド :

@Test
public void sortTreeShouldReturnEvergreen_WhenPineIsPassed() {
    Tree tree = tested.sortTree("Pine");
    assertThat(tree).isExactlyInstanceOf(Evergreen.class);
}

同じテストを達成するもう 1 つの方法は、hasSameClassAs を使用することです。 メソッド :

@Test
public void sortTreeShouldReturnDecidious_WhenBirchIsPassed() {
    Tree tree = tested.sortTree("Birch");
    assertThat(tree).hasSameClassAs(new Deciduous("Birch"));
}

3.結論

このチュートリアルでは、単体テストでオブジェクトの型を検証するいくつかの異なる例を見てきました。シンプルな Junit5 を示しました 例と Hamcrest のメソッドの使用 および AssertJ ライブラリ。両方ハムクレスト および AssertJ エラーメッセージに役立つ追加情報を提供してください。

いつものように、この例のコードは GitHub で入手できます。


Java タグ