1

以下のリストに、 jUnit assert メソッドを使用してバンドルbundlesが含まれていないことを確認したいと思います。TestFramework

Bundle[] bundles = framework.getBundleContext().getBundles();

それで、jUnitがバンドルをバンドルのリストと比較するためのそのような方法を提供するかどうか疑問に思っていましたか?

4

2 に答える 2

3

配列をループして assertEquals または assertFalse を使用するだけです (John B が述べたように ham を使用したくない場合)。

for (Bundle current : bundles)
{
    assertFalse(current instanceof TestFramework);
}
于 2013-09-23T17:38:35.250 に答える
2

ハムクレストを使用:

 Assert.assertThat(bundles, 
          CoreMatchers.not(
               IsArrayContaining.hasItemInArray(TestFramework)));

静的インポートを使用する場合、これは次のようになります。

 assertThat(bundles, not(hasItemInArray(myItem)));

インスタンスが必要な場合は、次を使用できます。

 Assert.assertThat(bundles, 
          CoreMatchers.not(
               IsArrayContaining.hasItemInArray(
                    CoreMatchers.instanceOf(TestFramework.class))));

IsArrayContaining

参考までに、Assert.assertThat簡単だからという理由だけで使用しMatcherAssert.assertThatましたが、エラーのドキュメントが改善されるため、使用することを好みます。

DwB に対応して編集します。提示されたHamcrestHamcrest以外のソリューションは機能しますが、失敗した場合はexpected false got true. これは、配列のどの要素が条件に失敗したか、または複数の要素が失敗したかどうかを示しません。ハムクレストに行ったら、二度と戻れません。assertTrueassertFalseまたはそれ以上は使用しませんassertEquals

于 2013-09-23T17:35:39.033 に答える