java断言类型有哪些_断言对象是特定类型

问题

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

目前我有:

assertTrue(myObject instanceof Object1);

assertTrue(myObject instanceof Object2);

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

例如:

assertObjectIsClass(myObject, Object1);

我能做到这一点:

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

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

#1 热门回答(188 赞)

你可以使用11868616方法和JUnit附带的Matchers。

看看this link,它描述了一些关于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 热门回答(12 赞)

自从assertThat这个旧答案现已弃用,我发布了正确的解决方案:

assertTrue(objectUnderTest instanceof TargetObject);

#3 热门回答(3 赞)

JUnit 5的解决方案

文件说:

但是,JUnit Jupiter的org.junit.jupiter.Assertions类不提供类似于JUnit 4的org.junit.Assert类中的assertThat()方法,该类接受Hamcrest Matcher。相反,鼓励开发人员使用第三方断言库提供的对匹配器的内置支持。

import static org.hamcrest.CoreMatchers.instanceOf;

import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.jupiter.api.Test;

class HamcrestAssertionDemo {

@Test

void assertWithHamcrestMatcher() {

SubClass subClass = new SubClass();

assertThat(subClass, instanceOf(BaseClass.class));

}

}

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

class AssertJDemo {

@Test

void assertWithAssertJ() {

SubClass subClass = new SubClass();

assertThat(subClass).isInstanceOf(BaseClass.class);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值