File tree Expand file tree Collapse file tree 6 files changed +100
-0
lines changed
core/deployment/src/main/java/io/quarkus/deployment/builditem
extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment
integration-tests/main/src
main/java/io/quarkus/example/arc
test/java/io/quarkus/example/test
junit4/src/main/java/io/quarkus/test/junit4
junit5/src/main/java/io/quarkus/test/junit Expand file tree Collapse file tree 6 files changed +100
-0
lines changed Original file line number Diff line number Diff line change
1
+ package io .quarkus .deployment .builditem ;
2
+
3
+ import org .jboss .builder .item .MultiBuildItem ;
4
+
5
+ /**
6
+ * This is an optional build item that allows us to track annotations that will define test classes
7
+ * It is only available during tests
8
+ */
9
+ public final class TestAnnotationBuildItem extends MultiBuildItem {
10
+
11
+ private final String annotationClassName ;
12
+
13
+ public TestAnnotationBuildItem (String annotationClassName ) {
14
+ this .annotationClassName = annotationClassName ;
15
+ }
16
+
17
+ public String getAnnotationClassName () {
18
+ return annotationClassName ;
19
+ }
20
+ }
Original file line number Diff line number Diff line change
1
+ package io .quarkus .arc .deployment ;
2
+
3
+ import java .util .List ;
4
+
5
+ import org .jboss .jandex .DotName ;
6
+
7
+ import io .quarkus .deployment .annotations .BuildProducer ;
8
+ import io .quarkus .deployment .annotations .BuildStep ;
9
+ import io .quarkus .deployment .builditem .TestAnnotationBuildItem ;
10
+
11
+ public class TestsAsBeanDefiningAnnotationsProcessor {
12
+
13
+ @ BuildStep
14
+ public void produce (List <TestAnnotationBuildItem > items , BuildProducer <BeanDefiningAnnotationBuildItem > producer ) {
15
+ for (TestAnnotationBuildItem item : items ) {
16
+ producer .produce (new BeanDefiningAnnotationBuildItem (DotName .createSimple (item .getAnnotationClassName ())));
17
+ }
18
+ }
19
+
20
+ }
Original file line number Diff line number Diff line change
1
+ package io .quarkus .example .arc ;
2
+
3
+ import javax .enterprise .context .ApplicationScoped ;
4
+
5
+ @ ApplicationScoped
6
+ public class UnusedBean {
7
+ }
Original file line number Diff line number Diff line change
1
+ package io .quarkus .example .test ;
2
+
3
+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
4
+
5
+ import javax .inject .Inject ;
6
+
7
+ import org .junit .jupiter .api .Test ;
8
+
9
+ import io .quarkus .example .arc .UnusedBean ;
10
+ import io .quarkus .test .junit .QuarkusTest ;
11
+
12
+ @ QuarkusTest
13
+ class BeanOnlyInTestCase {
14
+
15
+ @ Inject
16
+ UnusedBean unusedBean ;
17
+
18
+ @ Test
19
+ void assertBeanIsInjected () {
20
+ assertNotNull (unusedBean );
21
+ }
22
+ }
Original file line number Diff line number Diff line change 20
20
import static io .quarkus .test .common .PathTestHelper .getTestClassesLocation ;
21
21
22
22
import java .io .IOException ;
23
+ import java .util .function .Consumer ;
23
24
25
+ import org .jboss .builder .BuildChainBuilder ;
26
+ import org .jboss .builder .BuildContext ;
27
+ import org .jboss .builder .BuildStep ;
28
+ import org .junit .runner .RunWith ;
24
29
import org .junit .runner .notification .RunNotifier ;
25
30
import org .junit .runners .model .InitializationError ;
26
31
32
+ import io .quarkus .deployment .builditem .TestAnnotationBuildItem ;
27
33
import io .quarkus .runner .RuntimeRunner ;
28
34
import io .quarkus .runtime .LaunchMode ;
29
35
import io .quarkus .test .common .PropertyTestUtil ;
@@ -50,6 +56,18 @@ protected void startQuarkus() {
50
56
.setClassLoader (getClass ().getClassLoader ())
51
57
.setTarget (getAppClassLocation (getTestClass ()))
52
58
.setFrameworkClassesPath (getTestClassesLocation (getTestClass ()))
59
+ .addChainCustomizer (new Consumer <BuildChainBuilder >() {
60
+ @ Override
61
+ public void accept (BuildChainBuilder buildChainBuilder ) {
62
+ buildChainBuilder .addBuildStep (new BuildStep () {
63
+ @ Override
64
+ public void execute (BuildContext context ) {
65
+ context .produce (new TestAnnotationBuildItem (RunWith .class .getName ()));
66
+ }
67
+ }).produces (TestAnnotationBuildItem .class )
68
+ .build ();
69
+ }
70
+ })
53
71
.build ();
54
72
runtimeRunner .run ();
55
73
}
Original file line number Diff line number Diff line change 56
56
import io .quarkus .bootstrap .util .PropertyUtils ;
57
57
import io .quarkus .deployment .ClassOutput ;
58
58
import io .quarkus .deployment .QuarkusClassWriter ;
59
+ import io .quarkus .deployment .builditem .TestAnnotationBuildItem ;
59
60
import io .quarkus .deployment .builditem .TestClassPredicateBuildItem ;
60
61
import io .quarkus .deployment .util .IoUtil ;
61
62
import io .quarkus .runner .RuntimeRunner ;
@@ -243,6 +244,18 @@ public boolean test(String className) {
243
244
.build ();
244
245
}
245
246
})
247
+ .addChainCustomizer (new Consumer <BuildChainBuilder >() {
248
+ @ Override
249
+ public void accept (BuildChainBuilder buildChainBuilder ) {
250
+ buildChainBuilder .addBuildStep (new BuildStep () {
251
+ @ Override
252
+ public void execute (BuildContext context ) {
253
+ context .produce (new TestAnnotationBuildItem (QuarkusTest .class .getName ()));
254
+ }
255
+ }).produces (TestAnnotationBuildItem .class )
256
+ .build ();
257
+ }
258
+ })
246
259
.build ();
247
260
runtimeRunner .run ();
248
261
You can’t perform that action at this time.
0 commit comments