You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pekko.apache.org by fa...@apache.org on 2026/09/30 16:11:20 UTC
(pekko-quickstart-java.g8) 01/01: Switch template tests from JUnit 4 to JUnit Jupiter
This is an automated email from the ASF dual-hosted git repository.
pjfanning pushed a commit to branch junit-jupiter
in repository https://gitbox.apache.org/repos/asf/pekko-quickstart-java.g8.git
commit ed8024bd36f91ac496abaef2bb9e37187f5ddb48
Author: PJ Fanning <pj...@users.noreply.github.com>
AuthorDate: Wed Sep 30 17:11:09 2026 +0100
Switch template tests from JUnit 4 to JUnit Jupiter
Use JUnit 6 (Jupiter) with Pekko's TestKitJUnit5Extension in the sbt,
Maven and Gradle builds. sbt needs the sbt-jupiter-interface plugin for
test discovery; its sbt 2 builds require JUnit 6, so generated projects
now need Java 17 (Maven compiles with release 17, README updated).
Fix CI so it actually tests the templated app: g8Test/scripted skipped
it because the template uses sbt 2 while this build is on sbt 1. CI now
renders the template and runs `sbt testFull` and `mvn test` in target/g8.
Co-Authored-By: Claude Opus 5.5 (1M context) <no...@anthropic.com>
---
.github/workflows/build-test.yml | 17 ++++++++++++++---
README.md | 2 +-
docs/src/main/paradox/testing-actors.md | 7 ++++---
src/main/g8/build.gradle | 8 +++++++-
src/main/g8/build.sbt | 4 ++--
src/main/g8/pom.xml | 14 +++++++++-----
src/main/g8/project/plugins.sbt | 1 +
.../g8/src/test/java/$package$/PekkoQuickstartTest.java | 15 ++++++++++-----
8 files changed, 48 insertions(+), 20 deletions(-)
diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 4e9e2b8..2b52c5a 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -25,6 +25,17 @@ jobs:
- name: Cache Coursier cache
uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # v8.1.1
- - name: sbt test
- # This runs the template with the default parameters, and runs test within the templated app.
- run: sbt -Dfile.encoding=UTF8 -J-XX:ReservedCodeCacheSize=256M test docs/paradox
+ - name: Render template and build docs
+ # This renders the template with the default parameters into target/g8.
+ run: sbt -Dfile.encoding=UTF8 -J-XX:ReservedCodeCacheSize=256M g8 docs/paradox
+
+ - name: sbt test in templated app
+ # Run directly rather than via g8Test: scripted skips the test because the
+ # templated app uses sbt 2 while this build (paradox) is still on sbt 1.
+ # testFull, because sbt 2's `test` is testQuick and may skip cached passes.
+ working-directory: target/g8
+ run: sbt -Dfile.encoding=UTF8 -J-XX:ReservedCodeCacheSize=256M testFull
+
+ - name: mvn test in templated app
+ working-directory: target/g8
+ run: mvn -B test
diff --git a/README.md b/README.md
index 8d099a4..1c86ca1 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ The Hello World example illustrates Pekko basics. Within 30 minutes, you should
It can also be used as a [Giter8][g8] template for Pekko with Java.
Prerequisites:
-- JDK 8
+- JDK 17
- [sbt][sbt] 1.2.8 or higher ([download here][sbt_download])
Open a console and run the following command to apply this template:
diff --git a/docs/src/main/paradox/testing-actors.md b/docs/src/main/paradox/testing-actors.md
index dd63874..fcc90e4 100644
--- a/docs/src/main/paradox/testing-actors.md
+++ b/docs/src/main/paradox/testing-actors.md
@@ -1,6 +1,6 @@
## Testing Actors
-The tests in the Hello World example illustrates use of the [JUnit](https://www.junit.org/) framework. The test coverage is not complete.
+The tests in the Hello World example illustrates use of the [JUnit Jupiter](https://junit.org/) framework. The test coverage is not complete.
It shows how to test actor code and provides some basic concepts.
@@snip [PekkoQuickstartTest.java]($g8srctest$/java/$package$/PekkoQuickstartTest.java)
@@ -9,8 +9,9 @@ It shows how to test actor code and provides some basic concepts.
@@snip [PekkoQuickstartTest.java]($g8srctest$/java/$package$/PekkoQuickstartTest.java) { #definition }
-Support for JUnit is included by using the `TestKitJunitResource` JUnit rule. This automatically creates and cleans
-up an `ActorTestKit`. To see how to use the testkit directly see the [full documentation](https://pekko.apache.org/docs/pekko/current/typed/testing-async.html).
+Support for JUnit Jupiter is included by using the `TestKitJUnit5Extension` extension. The `ActorTestKit` field annotated
+with `@JUnit5TestKit` is shut down by the extension after all the tests in the class have run. `@TestInstance(PER_CLASS)`
+ensures that a single `ActorTestKit` is shared by all the tests in the class. To see how to use the testkit directly see the [full documentation](https://pekko.apache.org/docs/pekko/current/typed/testing-async.html).
### Test methods
diff --git a/src/main/g8/build.gradle b/src/main/g8/build.gradle
index 1f7bec6..a0fe657 100644
--- a/src/main/g8/build.gradle
+++ b/src/main/g8/build.gradle
@@ -12,11 +12,17 @@ dependencies {
implementation 'org.apache.pekko:pekko-actor-typed_2.13:$pekko_version$'
implementation 'ch.qos.logback:logback-classic:1.3.14'
testImplementation 'org.apache.pekko:pekko-actor-testkit-typed_2.13:$pekko_version$'
- testImplementation 'junit:junit:4.13.2'
+ testImplementation platform('org.junit:junit-bom:6.0.3')
+ testImplementation 'org.junit.jupiter:junit-jupiter'
+ testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
mainClassName = "$package$.PekkoQuickstart"
+test {
+ useJUnitPlatform()
+}
+
run {
standardInput = System.in
}
diff --git a/src/main/g8/build.sbt b/src/main/g8/build.sbt
index bc10a95..b335e64 100644
--- a/src/main/g8/build.sbt
+++ b/src/main/g8/build.sbt
@@ -16,5 +16,5 @@ libraryDependencies ++= Seq(
"org.apache.pekko" %% "pekko-actor-typed" % pekkoVersion,
"org.apache.pekko" %% "pekko-actor-testkit-typed" % pekkoVersion,
"ch.qos.logback" % "logback-classic" % "1.3.15",
- "junit" % "junit" % "4.13.2" % Test,
- "com.github.sbt" % "junit-interface" % "0.13.3" % Test)
+ "org.junit.jupiter" % "junit-jupiter" % "6.0.3" % Test,
+ "com.github.sbt.junit" % "jupiter-interface" % JupiterKeys.jupiterVersion.value % Test)
diff --git a/src/main/g8/pom.xml b/src/main/g8/pom.xml
index cecfb49..4e72662 100644
--- a/src/main/g8/pom.xml
+++ b/src/main/g8/pom.xml
@@ -28,9 +28,9 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.13.2</version>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter</artifactId>
+ <version>6.0.3</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -41,10 +41,14 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
- <source>1.8</source>
- <target>1.8</target>
+ <release>17</release>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>3.5.5</version>
+ </plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
diff --git a/src/main/g8/project/plugins.sbt b/src/main/g8/project/plugins.sbt
new file mode 100644
index 0000000..1865083
--- /dev/null
+++ b/src/main/g8/project/plugins.sbt
@@ -0,0 +1 @@
+addSbtPlugin("com.github.sbt.junit" % "sbt-jupiter-interface" % "0.19.0")
diff --git a/src/main/g8/src/test/java/$package$/PekkoQuickstartTest.java b/src/main/g8/src/test/java/$package$/PekkoQuickstartTest.java
index 2802e1d..11cbb55 100644
--- a/src/main/g8/src/test/java/$package$/PekkoQuickstartTest.java
+++ b/src/main/g8/src/test/java/$package$/PekkoQuickstartTest.java
@@ -1,16 +1,21 @@
package $package$;
-import org.apache.pekko.actor.testkit.typed.javadsl.TestKitJunitResource;
+import org.apache.pekko.actor.testkit.typed.annotations.JUnit5TestKit;
+import org.apache.pekko.actor.testkit.typed.javadsl.ActorTestKit;
+import org.apache.pekko.actor.testkit.typed.javadsl.TestKitJUnit5Extension;
import org.apache.pekko.actor.testkit.typed.javadsl.TestProbe;
import org.apache.pekko.actor.typed.ActorRef;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.extension.ExtendWith;
//#definition
+@ExtendWith(TestKitJUnit5Extension.class)
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class PekkoQuickstartTest {
- @ClassRule
- public static final TestKitJunitResource testKit = new TestKitJunitResource();
+ @JUnit5TestKit
+ public final ActorTestKit testKit = ActorTestKit.create();
//#definition
//#test
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pekko.apache.org
For additional commands, e-mail: commits-help@pekko.apache.org