加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在JUnit中创建assertClass()方法

发布时间:2020-12-15 02:05:08 所属栏目:Java 来源:网络整理
导读:我正在为基于Apache MINA的协议项目创建一个测试平台.在MINA中,当您收到数据包时,messageReceived()方法获取一个Object.理想情况下,我想使用JUnit方法assertClass(),但它不存在.我正在努力找出最接近的东西.我试图找到类似于instanceof的东西. 目前我有: pu
我正在为基于Apache MINA的协议项目创建一个测试平台.在MINA中,当您收到数据包时,messageReceived()方法获取一个Object.理想情况下,我想使用JUnit方法assertClass(),但它不存在.我正在努力找出最接近的东西.我试图找到类似于instanceof的东西.

目前我有:

public void assertClass(String msg,Class expected,Object given) {  
    if(!expected.isInstance(given)) Assert.fail(msg);  
}

称之为:

assertClass("Packet type is correct",SomePacket.class,receivedPacket);

这没有问题,但是在试验和玩这个时,我的兴趣被instanceof运算符达到了顶峰.

if (receivedPacket instanceof SomePacket) { .. }

instanceof如何使用SomePacket来引用手头的对象?它不是一个对象的实例,它不是一个类,它是什么?!一旦确定了SomePacket的类型,就可以将我的assertClass()扩展为不必包含SomePacket.class参数,而是支持SomePacket?

解决方法

instanceof的参数是类/接口名称,它直接作为JVM指令实现.因此它非常有效.

http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.doc6.html#instanceof

instanceof而不是比较类的一个优点是,如果已经代理了类,instanceof仍然可以工作.

如果要检查的对象为null,它也将起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读