Skip to content

Commit fba93e7

Browse files
committed
[JUnit, TestNg] Use switch statement consistently
The AndroidInstrumentationReporter, JUnitReporter and TestNgReporter have some subtle style difference between. This made the code base a bit harder to understand. Using a switch-case-default-throws pattern makes it consistent and will make errors explicit when more states are added.
1 parent aa1e5a4 commit fba93e7

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

junit/src/main/java/cucumber/runtime/junit/JUnitReporter.java

+2
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ void handleStepResult(TestStep testStep, Result result) {
132132
stepErrors.add(error);
133133
stepNotifier.addFailure(error);
134134
break;
135+
default:
136+
throw new IllegalStateException("Unexpected result status: " + result.getStatus());
135137
}
136138
stepNotifier.fireTestFinished();
137139
}

testng/src/main/java/cucumber/api/testng/TestNgReporter.java

+22-14
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
import static org.testng.Reporter.getCurrentTestResult;
44
import static org.testng.Reporter.log;
55

6-
import cucumber.runtime.Utils;
76
import cucumber.api.Result;
87
import cucumber.api.event.EventHandler;
98
import cucumber.api.event.EventPublisher;
109
import cucumber.api.event.TestRunFinished;
1110
import cucumber.api.event.TestStepFinished;
1211
import cucumber.api.formatter.Formatter;
1312
import cucumber.api.formatter.NiceAppendable;
13+
import cucumber.runtime.Utils;
1414
import org.testng.ITestResult;
1515

1616
class TestNgReporter implements Formatter {
@@ -50,19 +50,27 @@ void uri(String uri) {
5050

5151
private void result(String stepText, Result result) {
5252
logResult(stepText, result);
53-
54-
if (result.is(Result.Type.FAILED) || result.is(Result.Type.AMBIGUOUS)) {
55-
ITestResult tr = getCurrentTestResult();
56-
tr.setThrowable(result.getError());
57-
tr.setStatus(ITestResult.FAILURE);
58-
} else if (result.is(Result.Type.SKIPPED)) {
59-
ITestResult tr = getCurrentTestResult();
60-
tr.setThrowable(result.getError());
61-
tr.setStatus(ITestResult.SKIP);
62-
} else if (result.is(Result.Type.UNDEFINED) || result.is(Result.Type.PENDING)) {
63-
ITestResult tr = getCurrentTestResult();
64-
tr.setThrowable(result.getError());
65-
tr.setStatus(ITestResult.FAILURE);
53+
ITestResult tr = getCurrentTestResult();
54+
55+
switch (result.getStatus()) {
56+
case PASSED:
57+
// do nothing
58+
break;
59+
case FAILED:
60+
case AMBIGUOUS:
61+
tr.setThrowable(result.getError());
62+
tr.setStatus(ITestResult.FAILURE);
63+
break;
64+
case SKIPPED:
65+
tr.setThrowable(result.getError());
66+
tr.setStatus(ITestResult.SKIP);
67+
case UNDEFINED:
68+
case PENDING:
69+
tr.setThrowable(result.getError());
70+
tr.setStatus(ITestResult.FAILURE);
71+
break;
72+
default:
73+
throw new IllegalStateException("Unexpected result status: " + result.getStatus());
6674
}
6775
}
6876

0 commit comments

Comments
 (0)