断言对象是特定类型

2022-08-31 05:48:39

是否可以在 JUnit 中断言对象是类的实例?由于各种原因,我在测试中有一个对象,我想检查其类型。它是对象 1 的类型还是对象 2 的类型?

目前我有:

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

这有效,但我想知道是否有一种更具表现力的方式来做到这一点。

例如:

assertObjectIsClass(myObject, Object1);

我可以这样做:

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

有没有一种特定的断言方法允许我以更优雅,更流畅的方式测试对象的类型?


答案 1

您可以使用 JUnit 附带的方法和匹配器。assertThat

看看这个链接,它描述了一些关于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));
    }
}

答案 2

由于哪个是旧答案现在已被弃用,因此我发布了正确的解决方案:assertThat

assertTrue(objectUnderTest instanceof TargetObject);


推荐