-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIntegrationTestSuite.java
37 lines (31 loc) · 1.27 KB
/
IntegrationTestSuite.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.merkle.oss.magnolia.testing;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.Extension;
import org.junit.platform.commons.support.ReflectionSupport;
import com.merkle.oss.magnolia.testing.suite.MagnoliaTestSuite;
@MagnoliaTestSuite(testClassProvider = IntegrationTestSuite.TestClassProvider.class)
public class IntegrationTestSuite {
public static class TestClassProvider implements MagnoliaTestSuite.TestClassProvider {
private static final Set<Class<? extends Extension>> INTEGRATION_TEST_EXTENSION_CLASSES = Set.of(MagnoliaIntegrationBeforeAllTestExtension.class, MagnoliaIntegrationTestExtension.class);
@Override
public List<Class<?>> get() {
return ReflectionSupport.findAllClassesInPackage(
"com.merkle.oss.magnolia.testing",
this::annotatedWithMagnoliaIntegrationTestExtension,
ignored -> true
);
}
private boolean annotatedWithMagnoliaIntegrationTestExtension(final Class<?> clazz) {
return Optional
.ofNullable(clazz.getAnnotation(ExtendWith.class))
.map(ExtendWith::value)
.stream()
.flatMap(Arrays::stream)
.anyMatch(INTEGRATION_TEST_EXTENSION_CLASSES::contains);
}
}
}