Skip to content

Commit e0f45e7

Browse files
ervuksbaev
authored andcommitted
add multiple example tables support for cucumber-jvm (fixes allure-framework#337, via allure-framework#340)
1 parent b445557 commit e0f45e7

3 files changed

Lines changed: 42 additions & 11 deletions

File tree

allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import gherkin.ast.Feature;
3434
import gherkin.ast.ScenarioDefinition;
3535
import gherkin.ast.ScenarioOutline;
36-
import gherkin.ast.TableRow;
3736
import gherkin.pickles.PickleCell;
3837
import gherkin.pickles.PickleRow;
3938
import gherkin.pickles.PickleTable;
@@ -50,6 +49,7 @@
5049

5150
import java.io.ByteArrayInputStream;
5251
import java.nio.charset.Charset;
52+
import java.util.ArrayList;
5353
import java.util.Deque;
5454
import java.util.HashMap;
5555
import java.util.LinkedList;
@@ -60,7 +60,6 @@
6060
import java.util.stream.Collectors;
6161
import java.util.stream.IntStream;
6262

63-
import static io.qameta.allure.util.ResultsUtils.createParameter;
6463
import static io.qameta.allure.util.ResultsUtils.getStatus;
6564
import static io.qameta.allure.util.ResultsUtils.getStatusDetails;
6665
import static io.qameta.allure.util.ResultsUtils.md5;
@@ -266,15 +265,21 @@ private Status translateTestCaseStatus(final Result testCaseResult) {
266265
}
267266

268267
private List<Parameter> getExamplesAsParameters(final ScenarioOutline scenarioOutline) {
269-
final Examples examples = scenarioOutline.getExamples().get(0);
270-
final TableRow row = examples.getTableBody().stream()
271-
.filter(example -> example.getLocation().getLine() == currentTestCase.getLine())
272-
.findFirst().get();
273-
return IntStream.range(0, examples.getTableHeader().getCells().size()).mapToObj(index -> {
274-
final String name = examples.getTableHeader().getCells().get(index).getValue();
275-
final String value = row.getCells().get(index).getValue();
276-
return createParameter(name, value);
277-
}).collect(Collectors.toList());
268+
final List<Parameter> parameterList = new ArrayList<>();
269+
final List<Examples> scenarioOutlineList = scenarioOutline.getExamples().stream()
270+
.filter(examples -> examples.getLocation().getLine() + 2 == currentTestCase.getLine())
271+
.collect(Collectors.toList());
272+
273+
scenarioOutlineList.forEach(examples -> examples.getTableBody()
274+
.forEach(tableRow -> {
275+
IntStream.range(0, examples.getTableHeader().getCells().size())
276+
.forEach(consumer -> {
277+
final String name = examples.getTableHeader().getCells().get(consumer).getValue();
278+
final String value = tableRow.getCells().get(consumer).getValue();
279+
parameterList.add(new Parameter().setName(name).setValue(value));
280+
});
281+
}));
282+
return parameterList;
278283
}
279284

280285
private void createDataTableAttachment(final PickleTable pickleTable) {

allure-cucumber2-jvm/src/test/java/io/qameta/allure/cucumber2jvm/AllureCucumber2JvmTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,17 @@ void shouldAddParametersFromExamples() {
263263

264264
}
265265

266+
@AllureFeatures.Parameters
267+
@Test
268+
void shouldHandleMultipleExampleTables() {
269+
final AllureResults results = runFeature("features/multipleExamples.feature");
270+
271+
final List<TestResult> testResults = results.getTestResults();
272+
273+
assertThat(testResults)
274+
.hasSize(2);
275+
}
276+
266277
@AllureFeatures.MarkerAnnotations
267278
@Test
268279
void shouldAddTags() {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Feature: Test Scenarios with multiple examples
2+
3+
Scenario Outline: Scenario with Positive Examples
4+
Given a is <a>
5+
And b is <b>
6+
When I add a to b
7+
Then result is <result>
8+
9+
Examples:
10+
| a | b | result |
11+
| 1 | 3 | 4 |
12+
13+
Examples:
14+
| a | b | result |
15+
| 2 | 8 | 10 |

0 commit comments

Comments
 (0)