私は現在、エンジニアリング データをテストするためのフレームワークとして JUnit を使用しているプロジェクトに参加しています (参照: 最後の質問Java レポート プロジェクトの作成 -- JUnit と Ant を使用したいのですが、方法がわかりません) 。
画像 (エラー コード ブロック) は 1,000 語を伝えるので、ループを貼り付けます。
JUnitCore junit = new JUnitCore();
RunListener listener = new RunListener();
junit.addListener(listener);
[...]
for (AbstractFault fault : faultLog) {
theFault = fault;
Result result = junit.run(GearAndBrakeFaultLogReports.class);
for (Failure f : result.getFailures()) {
output.println(log.getName());
output.println(fault.getName());
output.println(HelperFunctions.splitCamelCase(f.getDescription()
.getMethodName()));
output.println(f.getMessage());
output.println();
}
}
ご覧のとおり、「junit.run」を何度も実行しています (ログの障害ごとに)。
ただし、テストのいずれかが fail() を起動した場合、そのテストを繰り返したくありません。言い換えれば、ログに 50 の障害があり、障害 #1 でテストが失敗した場合、ループしている 49 の将来の障害でそのテストを試行したくありません。
テストの例を次に示します。
private static boolean LeftMLGDownTooLongFound = false;
@Test
public final void testLeftMLGDownTooLong() {
if (!LeftMLGDownTooLongFound
&& handleLDGReportFaults(false)
&& theFault.getName().equals(FaultNames.LDG_LG_DWN_TIME.toString())) {
assertNotGreater(getPCandRecNum(), 8f, ldgFault.getLeftStrutUpTime());
LeftMLGDownTooLongFound = true;
}
}
現在、これを行うには、最初は false に設定されている静的ブールを作成していますが、最初のアサーションの後に true に切り替わります。これが機能するかどうかはわかりませんが、アイデアです。すべてのテスト (100 のテスト) に対してこれを実行したくありません。
JUnitCore または Runner クラスに、fail() が呼び出された後にテストが複数回実行されないようにフラグを立てることができるパブリック関数、メソッド、または方法はありますか?