我想确保下面的bundles
列表不包含TestFramework
使用 jUnit 断言方法的包。
Bundle[] bundles = framework.getBundleContext().getBundles();
所以我想知道jUnit是否提供了任何这样的方法来比较一个包和包列表?
我想确保下面的bundles
列表不包含TestFramework
使用 jUnit 断言方法的包。
Bundle[] bundles = framework.getBundleContext().getBundles();
所以我想知道jUnit是否提供了任何这样的方法来比较一个包和包列表?
只需遍历数组并使用 assertEquals 或 assertFalse (假设您不想使用 John B 提到的 ham)。
for (Bundle current : bundles)
{
assertFalse(current instanceof TestFramework);
}
使用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
。