1. ホーム

[解決済み】オブジェクトが特定の型であることを保証する

2022-04-07 11:52:38

質問

JUnitで、あるオブジェクトがクラスのインスタンスであることを表明することは可能ですか?様々な理由で、テストにオブジェクトがあり、その型をチェックしたい。それは Object1 のタイプなのか、それとも Object2 のタイプなのか?

現在、私は

assertTrue(myObject instanceof Object1);
assertTrue(myObject instanceof Object2);

これはうまくいくのですが、もっと表現力のある方法はないかと考えていました。

例えばこんな感じ。

assertObjectIsClass(myObject, Object1);

こんなこともできるんだ。

assertEquals(myObject.class, Object1.getClass());

よりエレガントで流動的な方法でオブジェクトの型をテストすることができる、特定のアサートメソッドはありますか?

どのように解決するのですか?

を使用することができます。 assertThat メソッドと、JUnitに付属するMatcherを使用します。

を見てみましょう。 このリンク には、JUnit Matchersについて少し書かれています。

public class BaseClass {
}

public class SubClass extends BaseClass {
}

テストします。

import org.junit.Test;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;

/**
 * @author maba, 2012-09-13
 */
public class InstanceOfTest {

    @Test
    public void testInstanceOf() {
        SubClass subClass = new SubClass();
        assertThat(subClass, instanceOf(BaseClass.class));
    }
}