Skip to content

Commit a677a3f

Browse files
jktttbaev
authored andcommitted
junit4 - сombining repeatable annotations on method and on class (via #121)
1 parent ec171cf commit a677a3f

File tree

4 files changed

+17
-8
lines changed

4 files changed

+17
-8
lines changed

allure-junit4/src/main/java/io/qameta/allure/junit4/AllureJunit4.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -159,17 +159,20 @@ private List<Label> getLabels(final Description result) {
159159
).reduce(Stream::concat).orElseGet(Stream::empty).collect(Collectors.toList());
160160
}
161161

162-
private <T extends Annotation> Stream<Label> getLabels(final Description result, final Class<T> clazz,
162+
private <T extends Annotation> Stream<Label> getLabels(final Description result, final Class<T> labelAnnotation,
163163
final Function<T, Label> extractor) {
164164

165-
final List<Label> onMethod = getAnnotationsOnMethod(result, clazz).stream()
165+
final List<Label> labels = getAnnotationsOnMethod(result, labelAnnotation).stream()
166166
.map(extractor)
167167
.collect(Collectors.toList());
168-
if (!onMethod.isEmpty()) {
169-
return onMethod.stream();
168+
169+
if (labelAnnotation.isAnnotationPresent(Repeatable.class) || labels.isEmpty()) {
170+
final Stream<Label> onClassLabels = getAnnotationsOnClass(result, labelAnnotation).stream()
171+
.map(extractor);
172+
labels.addAll(onClassLabels.collect(Collectors.toList()));
170173
}
171-
return getAnnotationsOnClass(result, clazz).stream()
172-
.map(extractor);
174+
175+
return labels.stream();
173176
}
174177

175178
private Label createLabel(final Tag tag) {

allure-junit4/src/test/java/io/qameta/allure/junit4/FeatureCombinationsTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@
2626

2727
import java.util.List;
2828

29+
import static io.qameta.allure.junit4.samples.TaggedTests.CLASS_TAG1;
30+
import static io.qameta.allure.junit4.samples.TaggedTests.CLASS_TAG2;
2931
import static io.qameta.allure.junit4.samples.TaggedTests.METHOD_TAG1;
3032
import static io.qameta.allure.junit4.samples.TaggedTests.METHOD_TAG2;
33+
3134
import static org.assertj.core.api.Assertions.assertThat;
3235

3336
public class FeatureCombinationsTest {
@@ -219,6 +222,6 @@ public void shouldSetTags() throws Exception {
219222
.flatExtracting(TestResult::getLabels)
220223
.filteredOn(label -> "tag".equals(label.getName()))
221224
.extracting(Label::getValue)
222-
.containsExactlyInAnyOrder(METHOD_TAG1, METHOD_TAG2);
225+
.containsExactlyInAnyOrder(CLASS_TAG1, CLASS_TAG2, METHOD_TAG1, METHOD_TAG2);
223226
}
224227
}

allure-junit4/src/test/java/io/qameta/allure/junit4/samples/OneTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
/**
77
* @author charlie (Dmitry Baev).
88
*/
9+
@DisplayName("Should be overwritten by method annotation")
910
public class OneTest {
1011

1112
@Test

allure-junit4/src/test/java/io/qameta/allure/junit4/samples/TaggedTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
/**
88
* @author jkttt on 05.07.17.
99
*/
10+
@Tags({@Tag(TaggedTests.CLASS_TAG1), @Tag(TaggedTests.CLASS_TAG2)})
1011
public class TaggedTests {
1112

1213
public static final String METHOD_TAG2 = "method_tag1";
1314
public static final String METHOD_TAG1 = "method_tag2";
14-
public static final String CLASS_TAG = "class_tag";
15+
public static final String CLASS_TAG1 = "class_tag1";
16+
public static final String CLASS_TAG2 = "class_tag2";
1517

1618
@Test
1719
@Tags({@Tag(METHOD_TAG1),

0 commit comments

Comments
 (0)