我想确保以下bundles
列表不包含使用jUnit断言方法的TestFramework
包。
Bundle[] bundles = framework.getBundleContext().getBundles();
所以我想知道jUnit是否提供了任何这样的方法来比较捆绑包和List of Bundles?
答案 0 :(得分:3)
只需遍历数组并使用assertEquals或assertFalse(假设您不想使用John B提到的ham)。
for (Bundle current : bundles)
{
assertFalse(current instanceof TestFramework);
}
答案 1 :(得分:2)
使用Hamcrest:
Assert.assertThat(bundles,
CoreMatchers.not(
IsArrayContaining.hasItemInArray(TestFramework)));
如果使用静态导入,则为:
assertThat(bundles, not(hasItemInArray(myItem)));
如果您需要实例,可以使用:
Assert.assertThat(bundles,
CoreMatchers.not(
IsArrayContaining.hasItemInArray(
CoreMatchers.instanceOf(TestFramework.class))));
仅供参考,我使用Assert.assertThat
只是因为它更容易,但我更喜欢使用MatcherAssert.assertThat
因为它提供了更好的错误文档。
编辑以响应DwB。我更喜欢Hamcrest
,因为非Hamcrest解决方案有效,但在失败的情况下,除了expected false got true
之外,您不会获得任何其他信息。这不会告诉您数组的哪个元素不符合条件或多个元素失败。一旦你去Hamcrest,你将永远不会回去。我再也不会使用assertTrue
,assertFalse
或assertEquals
。