1

私は JUnit4 は初めてで、Google Test for C++ には慣れています。を使用して、多くのチェックを含むコードを作成しassertEquals()ました。ログ情報を出力して、チェックが成功したかどうかとその理由をユーザーに伝え、次のassertEquals(). しかし、それはすぐに実行を停止しています。

このトピックについて検索したところ、JUnit は Google Test とは異なるように設計されているようです。そのため、アサートごとに @Test メソッドを使用する必要があります。しかし、私が欲しいものを手に入れるための代替手段はありますか? assertの代わりにverifyメソッドについて読んだのですが、それが何であるかさえわからないSeleniumに関連していました。

4

2 に答える 2

4

ErrorCollectorルールを使用して、複数のアサートを実行できます。

@Rule
public ErrorCollector collector = new ErrorCollector();

@Test
public void testMethod()
{
   collector.checkThat(variable, equalTo(otherVaiable));
   collector.checkThat(variable2, equalTo(otherVaiable2));
}

checkThat メソッドは、hamcrest マッチャーを使用してアサートを行います。

于 2013-01-15T22:05:50.657 に答える
2

あなたの研究はかなり正しいです。純粋主義者は、各テスト ケースに 1 つのアサーションを含める必要があると考えています。私はそのルールには従いませんが、最初のアサーション1が失敗したらすぐにテストを中断するのは良い考えです。

次の例を検討してください。

assertEquals(1, listOfNames.size());
assertEquals(10, listOfNames.get(0).length());

最初のアサーションが失敗した場合に 2 番目のアサーションを実行してもあまり意味がありません。カスケード障害は、根本原因を見つけるのに役立ちません。

1 - 実際、アサーションが失敗すると特別な例外がスローされます

于 2013-01-15T17:35:33.063 に答える