Java TestNgリスナーメソッドonFinish()
に重複コードがあり、それを関数内で分離して2回呼び出すことができます。ここで以下の私の方法であって、その上記方法から分かるようJava共通メソッド/関数(重複コード用)
@Override
public void onFinish(ITestContext testContext) {
HashMap<Object, Object> map = new HashMap<Object,Object>();
Object key_id = new Object();
map.put(key_id, "id");
Object key_result = new Object();
map.put(key_result, "result");
//Check for all the FAILED tests
for (ITestResult failedTest : testContext.getFailedTests().getAllResults()) {
Method method = failedTest.getMethod().getConstructorOrMethod().getMethod();
TestInfo annotation = method.getAnnotation(TestInfo.class);
try {
if(annotation!=null) {
for(String test_id: annotation.id()) {
map.put(map.get(key_result), Status.AUTOFAIL.getValue());
Integration.addTestResult(map);
}
} catch (SecurityException | IOException
| TestRailApiException | NullPointerException e) {
TestLogger.logError("Failed to find the annotation");
}
}
//Check for all the SKIPPED tests
for (ITestResult skippedTest : testContext.getSkippedTests().getAllResults()) {
Method method = skippedTest.getMethod().getConstructorOrMethod().getMethod();
TestInfo annotation = method.getAnnotation(TestInfo.class);
try {
if(annotation!=null) {
for(String test_id: annotation.id()) {
map.put(map.get(key_result), Status.AUTOSKIP.getValue());
Integration.addTestResult(map);
}
} catch (SecurityException | IOException
| TestRailApiException | NullPointerException e) {
TestLogger.logError("Failed to find the annotation");
}
}
がループ用の2つのとの間の唯一の違いは、私は最初の失敗したテストを確認し、別のループでテストをスキップします。内部的な違いは、まずAUTOFAILをテストのステータスとしてプッシュし、次にスキップしたすべてのテストに対してAUTOSKIPをプッシュします。
よく分かっているように、共通の機能でこれを分けて、その機能をAUTOFAIL
とAUTOSKIP
に送信するようにしたいと思います。
これはいい考えです。何を試しましたか? –
私はそれぞれ失敗したテストとスキップしたテストの2つの別々の関数を作成しましたが、共通の関数が必要です。また、 'map.put(map.get(key_result)、Status.'AUTOSKIP'.getValue());'そして...「AUTOFAIL」は私が別の機能としてそれを作ることを許していない共通点を持つ必要があります。 –