Ger*_*rdo 9 mocking instanceof mockito
目前我正在测试一个获取对象的方法,并检查该对象是否是存储为实例变量的类的实例.到目前为止没问题.
但是在测试中我必须使用模拟,其中一个模拟是传递给该方法的对象.而现在,它变得棘手.让我们看看代码(我总结了这个测试中的代码):
Class<AdapterEvent> clazz = AdapterEvent.class;
AdapterEvent adapterEvent = Mockito.mock(AdapterEvent.class);
Assert.assertTrue(adapterEvent.getClass().equals(clazz));
Assert.assertTrue(adapterEvent.getClass().isAssignableFrom(clazz));
Run Code Online (Sandbox Code Playgroud)
好吧,这个测试实际上失败了.有谁知道为什么?有人知道如何通过在测试中使用模拟来解决这个问题吗?是否有其他方法可以将对象与特定类进行比较.
非常感谢你的帮助.
最好的祝福
赫拉尔
你的第一个断言永远不会成真--Mockito嘲笑是一个全新的类,所以一个简单的东西equals()永远不会起作用.顺便说一下,对于这样的测试,如果你使用的话Assert.assertEquals(),你会得到一个更有用的失败信息,其中第一个参数是预期的结果; 例如:
Assert.assertEquals(clazz, adapterEvent.getClass());
Run Code Online (Sandbox Code Playgroud)
你的第二个断言将是正确的,但你已经混在一起的方向isAssignableFrom()(很容易做到,JavaDoc中是强大的混乱) -翻转过来,它和你的黄金:
Assert.assertTrue(clazz.isAssignableFrom(adapterEvent.getClass()));
Run Code Online (Sandbox Code Playgroud)
我认为 instanceof 会按照您想要的方式工作:
Assert.assertTrue(adapterEvent instanceof AdapterEvent);
Run Code Online (Sandbox Code Playgroud)
您确定您应该对此进行测试吗?不知道你想要完成什么,很难说,但我认为这个测试可能没有必要。
| 归档时间: |
|
| 查看次数: |
9868 次 |
| 最近记录: |