我正在测试一个方法,该方法获取一个对象并检查该对象是否是存储为实例变量的类的实例。到目前为止没有问题。
但在测试中我必须使用模拟,并且这些模拟之一是传递给该方法的对象。而现在,事情变得棘手了。我们看一下代码(我总结了本次测试的代码):
Class<AdapterEvent> clazz = AdapterEvent.class;
AdapterEvent adapterEvent = Mockito.mock(AdapterEvent.class);
Assert.assertTrue(adapterEvent.getClass().equals(clazz));
Assert.assertTrue(adapterEvent.getClass().isAssignableFrom(clazz));
好吧,这个测试实际上失败了。有谁知道为什么?有人知道如何通过仍然使用测试中的模拟来解决这个问题吗?是否有另一种方法可以将对象与特定类进行比较。
你的第一个断言将never是真的 - Mockito 模拟是一个全新的类,所以一个简单的equals()
永远不会工作。顺便说一句,对于这样的测试,如果您使用,您将收到更有用的失败消息Assert.assertEquals()
,其中第一个参数是预期结果;例如。:
Assert.assertEquals(clazz, adapterEvent.getClass());
你的第二个断言would是正确的,但你混淆了方向isAssignableFrom()
(很容易做到,JavaDoc 非常令人困惑)- 翻转它,你就很幸运:
Assert.assertTrue(clazz.isAssignableFrom(adapterEvent.getClass()));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)