File tree Expand file tree Collapse file tree 4 files changed +86
-1
lines changed
java/templates/java-maven-quarkus Expand file tree Collapse file tree 4 files changed +86
-1
lines changed Original file line number Diff line number Diff line change @@ -12,4 +12,10 @@ To start the service, simply run:
1212
1313``` shell
1414$ quarkus dev
15- ```
15+ ```
16+
17+ ## Unit testing
18+
19+ The restate ` RestateExtension ` junit extension does currently not work together with quarkus CDI, so you cannot combine
20+ ` @RestateTest ` with ` @QuarkusTest ` , so if you want to use ` @Inject ` in unit test with restate services, you must use
21+ the ` RestateRunner ` directly as shown in the ` GreeterCdiTest ` .
Original file line number Diff line number Diff line change 3939 <groupId >io.quarkus</groupId >
4040 <artifactId >quarkus-vertx</artifactId >
4141 </dependency >
42+ <dependency >
43+ <groupId >io.quarkus</groupId >
44+ <artifactId >quarkus-junit5</artifactId >
45+ </dependency >
4246
4347 <dependency >
4448 <groupId >dev.restate</groupId >
4549 <artifactId >sdk-java-http</artifactId >
4650 <version >${restate.version} </version >
4751 </dependency >
4852
53+ <dependency >
54+ <groupId >dev.restate</groupId >
55+ <artifactId >sdk-testing</artifactId >
56+ <version >${restate.version} </version >
57+ <scope >test</scope >
58+ </dependency >
59+
4960 <!-- This is usually not needed, but fails without it with CNFE -->
5061 <dependency >
5162 <groupId >com.google.protobuf</groupId >
Original file line number Diff line number Diff line change 1+ package org .acme ;
2+
3+ import dev .restate .client .Client ;
4+ import dev .restate .sdk .endpoint .Endpoint ;
5+ import dev .restate .sdk .testing .RestateRunner ;
6+ import io .quarkus .test .junit .QuarkusTest ;
7+ import jakarta .inject .Inject ;
8+ import org .junit .jupiter .api .AfterAll ;
9+ import org .junit .jupiter .api .BeforeEach ;
10+ import org .junit .jupiter .api .Test ;
11+
12+ import static org .junit .jupiter .api .Assertions .assertEquals ;
13+
14+ @ QuarkusTest
15+ public class GreeterCdiTest {
16+
17+ @ Inject
18+ Greeter greeter ;
19+
20+ static RestateRunner restateRunner ;
21+
22+ @ BeforeEach
23+ void beforeEach () {
24+ if (restateRunner == null ) {
25+ restateRunner = RestateRunner .from (Endpoint .builder ().bind (greeter ).build ()).build ();
26+ restateRunner .start ();
27+ }
28+ }
29+
30+ @ AfterAll
31+ static void afterAll () {
32+ if (restateRunner != null && restateRunner .getRestateContainer ().isRunning ()) {
33+ restateRunner .stop ();
34+ }
35+ }
36+
37+ @ Test
38+ void test () {
39+ var ingressClient = Client .connect (restateRunner .getRestateUrl ().toString ());
40+ var c = GreeterClient .fromClient (ingressClient );
41+ var response = c .greet (new Greeter .Greeting ("John Doe" ));
42+ assertEquals ("You said hi to John Doe!" , response .message ());
43+ }
44+ }
Original file line number Diff line number Diff line change 1+ package org .acme ;
2+
3+ import dev .restate .client .Client ;
4+ import dev .restate .sdk .testing .BindService ;
5+ import dev .restate .sdk .testing .RestateClient ;
6+ import dev .restate .sdk .testing .RestateTest ;
7+ import org .acme .Greeter .GreetingResponse ;
8+ import org .junit .jupiter .api .Test ;
9+
10+ import static org .junit .jupiter .api .Assertions .assertEquals ;
11+
12+ @ RestateTest
13+ public class GreeterTest {
14+
15+ @ BindService
16+ Greeter greeter = new Greeter ();
17+
18+ @ Test
19+ void test (@ RestateClient Client ingressClient ) {
20+ GreeterClient .IngressClient c = GreeterClient .fromClient (ingressClient );
21+ GreetingResponse response = c .greet (new Greeter .Greeting ("John Doe" ));
22+ assertEquals ("You said hi to John Doe!" , response .message ());
23+ }
24+ }
You can’t perform that action at this time.
0 commit comments