我正在为基于Apache MINA的协议项目创建一个测试平台.在MINA中,当您收到数据包时,该messageReceived()方法将获取一个Object.理想情况下,我想使用JUnit方法assertClass(),但它不存在.我正在努力找出最接近的东西.我试图找到类似的东西instanceof.
目前我有:
public void assertClass(String msg, Class expected, Object given) {
if(!expected.isInstance(given)) Assert.fail(msg);
}
Run Code Online (Sandbox Code Playgroud)
称之为:
assertClass("Packet type is correct", SomePacket.class, receivedPacket);
Run Code Online (Sandbox Code Playgroud)
这可以毫无问题地工作,但是在试验和玩这个游戏时,我的兴趣达到了instanceof运营商的高峰.
if (receivedPacket instanceof SomePacket) { .. }
Run Code Online (Sandbox Code Playgroud)
instanceof如何SomePacket用于引用手头的对象?它不是一个对象的实例,它不是一个类,它是什么?!一旦确定了什么类型SomePacket,那么有可能扩展我assertClass()不必包括SomePacket.class参数,而是支持SomePacket?
Ste*_*man 24
看看现在包含在JUnit中的Hamcrest匹配器.你想要的是:
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.instanceOf;
assertThat(receivedPacket, instanceOf(SomePacket.class));
Run Code Online (Sandbox Code Playgroud)
这可以完成您需要的一切,包括断言失败时的正确错误消息.
| 归档时间: |
|
| 查看次数: |
11063 次 |
| 最近记录: |