【发布时间】:2012-09-06 10:42:03
【问题描述】:
在 JUnit 中是否可以断言一个对象是一个类的实例?由于各种原因,我在测试中有一个要检查其类型的对象。是Object1的类型还是Object2的类型?
目前我有:
assertTrue(myObject instanceof Object1);
assertTrue(myObject instanceof Object2);
这可行,但我想知道是否有更富有表现力的方式来做到这一点。
例如:
assertObjectIsClass(myObject, Object1);
我可以这样做:
assertEquals(myObject.class, Object1.getClass());
是否有特定的断言方法可以让我以更优雅、更流畅的方式测试对象的类型?
【问题讨论】:
-
您知道
assertTrue(myObject instanceof Object1);和assertEquals(myObject.class, Object1.getClass());实际上是不同的测试吗?第一个接受 myObject 作为Object1的子类的一个实例,后者不接受。 -
@ammoQ 非常好。我没有想到子类。感谢您的澄清
-
正如 maba 指出的,考虑使用 Hamcrest。这不仅仅是为了让您有更好的工作测试。 Hamcrest 还提供比标准
assertTrue更好的故障记录。assertTrue只会说expected true got false,Hamcrest 会说expected instanced of XYZ, got instance of ABC
标签: java unit-testing junit