This is an automated email from the ASF dual-hosted git repository. dhemery pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push: new d58482b GEODE-4181: Add JUnit 5 Support (#6740) d58482b is described below commit d58482bed05e70eb848c9586df173d54e55193e5 Author: Dale Emery <dem...@vmware.com> AuthorDate: Thu Aug 5 15:28:42 2021 -0700 GEODE-4181: Add JUnit 5 Support (#6740) Added JUnit 5 support to all Geode projects that use `geode-junit`. STANDARD TEST TASKS Updated **./gradle/test.gradle** to configure these standard test tasks to use JUnit Platform to run tests: - `test` and `repeatUnitTest` - `acceptanceTest` and `repeatAcceptanceTest` - `distributedTest` and `repeatDistributedTest` - `integrationTest` and `repeatIntegrationTest` - `performanceTest` - `uiTest` - `upgradeTest` and `repeatUpgradeTest` STANDARD TEST MODULES Updated **./geode-junit/build.gradle**: - Added `junit-jupiter-api` and `junit-jupiter-params` as API dependencies. - Added `junit-jupiter-engine` and `junit-vintage-engine` as implementation dependencies. These changes add JUnit 5 support to any source set that depends on `geode-junit`, either directly or via `geode-dunit`. OTHER PROJECTS Added `junit-vintage-engine` dependency directly to each project that runs tests without `geode-junit` or `geode-dunit`: - `geode-common` - `geode-concurrency-test` - `geode-jmh` - `geode-modules` - `geode-rebalancer` - `static-analysis:pmd-rules` These changes **do not** add JUnit 5 support to these projects. Developers who want JUnit 5 support in these projects can declare dependencies on `junit-jupiter-api`, `junit-jupiter-params`, and `junit-jupiter-engine`. SPECIFIC TESTS Change `ConcurrencyRuleTest` to expect the exception types and exception messages thrown by AssertJ when `opentest4j` is on the classpath. --- .../src/test/resources/expected-pom.xml | 20 ++++++++++++++++++++ .../gradle/plugins/DependencyConstraints.groovy | 11 +++++++++++ extensions/geode-modules/build.gradle | 1 + geode-common/build.gradle | 2 ++ geode-concurrency-test/build.gradle | 1 + geode-jmh/build.gradle | 1 + geode-junit/build.gradle | 5 +++++ .../geode/test/junit/rules/ConcurrencyRuleTest.java | 8 ++++---- geode-junit/src/test/resources/expected-pom.xml | 21 ++++++++++++++++++++- geode-rebalancer/build.gradle | 1 + gradle/test.gradle | 6 ++++-- static-analysis/pmd-rules/build.gradle | 1 + 12 files changed, 71 insertions(+), 7 deletions(-) diff --git a/boms/geode-all-bom/src/test/resources/expected-pom.xml b/boms/geode-all-bom/src/test/resources/expected-pom.xml index 01d6a20..bb0a4e6 100644 --- a/boms/geode-all-bom/src/test/resources/expected-pom.xml +++ b/boms/geode-all-bom/src/test/resources/expected-pom.xml @@ -583,6 +583,26 @@ <version>2.2</version> </dependency> <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <version>5.7.2</version> + </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-params</artifactId> + <version>5.7.2</version> + </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-engine</artifactId> + <version>5.7.2</version> + </dependency> + <dependency> + <groupId>org.junit.vintage</groupId> + <artifactId>junit-vintage-engine</artifactId> + <version>5.7.2</version> + </dependency> + <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-api</artifactId> <version>3.141.59</version> diff --git a/buildSrc/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy b/buildSrc/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy index a9876a4..7b37766 100644 --- a/buildSrc/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy +++ b/buildSrc/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy @@ -65,6 +65,7 @@ class DependencyConstraints implements Plugin<Project> { // These versions are referenced in test.gradle, which is aggressively injected into all projects. deps.put("junit.version", "4.13.2") + deps.put("junit-jupiter.version", "5.7.2") deps.put("cglib.version", "3.3.0") return deps } @@ -221,6 +222,16 @@ class DependencyConstraints implements Plugin<Project> { entry('hamcrest') } + dependencySet(group: 'org.junit.jupiter', version: get('junit-jupiter.version')) { + entry('junit-jupiter-api') + entry('junit-jupiter-params') + entry('junit-jupiter-engine') + } + + dependencySet(group: 'org.junit.vintage', version: get('junit-jupiter.version')) { + entry('junit-vintage-engine') + } + dependencySet(group: 'org.seleniumhq.selenium', version: '3.141.59') { entry('selenium-api') entry('selenium-chrome-driver') diff --git a/extensions/geode-modules/build.gradle b/extensions/geode-modules/build.gradle index 1800cae..806dced 100644 --- a/extensions/geode-modules/build.gradle +++ b/extensions/geode-modules/build.gradle @@ -41,6 +41,7 @@ dependencies { // test testImplementation('org.apache.bcel:bcel') testImplementation('junit:junit') + testRuntimeOnly('org.junit.vintage:junit-vintage-engine') testImplementation('org.assertj:assertj-core') testImplementation('org.mockito:mockito-core') testImplementation('org.apache.tomcat:catalina-ha:' + DependencyConstraints.get('tomcat6.version')) diff --git a/geode-common/build.gradle b/geode-common/build.gradle index 3e9000a..cb48856 100755 --- a/geode-common/build.gradle +++ b/geode-common/build.gradle @@ -28,11 +28,13 @@ dependencies { // test testImplementation('junit:junit') + testRuntimeOnly('org.junit.vintage:junit-vintage-engine') testImplementation('org.assertj:assertj-core') testImplementation('org.mockito:mockito-core') // jmhTest jmhTestImplementation('junit:junit') + jmhTestRuntimeOnly('org.junit.vintage:junit-vintage-engine') jmhTestImplementation('org.assertj:assertj-core') } diff --git a/geode-concurrency-test/build.gradle b/geode-concurrency-test/build.gradle index cb44122..f257bae 100644 --- a/geode-concurrency-test/build.gradle +++ b/geode-concurrency-test/build.gradle @@ -25,6 +25,7 @@ dependencies { implementation('junit:junit') implementation('org.apache.logging.log4j:log4j-api') integrationTestImplementation('org.assertj:assertj-core') + integrationTestRuntimeOnly('org.junit.vintage:junit-vintage-engine') } integrationTest { diff --git a/geode-jmh/build.gradle b/geode-jmh/build.gradle index 37e0284..79b49a1 100644 --- a/geode-jmh/build.gradle +++ b/geode-jmh/build.gradle @@ -27,6 +27,7 @@ dependencies { api('org.openjdk.jmh:jmh-core') testImplementation('junit:junit') + testRuntimeOnly('org.junit.vintage:junit-vintage-engine') testImplementation('org.assertj:assertj-core') testImplementation('org.mockito:mockito-core') } diff --git a/geode-junit/build.gradle b/geode-junit/build.gradle index cc762c2..3f5d17c 100755 --- a/geode-junit/build.gradle +++ b/geode-junit/build.gradle @@ -38,6 +38,8 @@ dependencies { api('junit:junit') { exclude module: 'hamcrest' } + api('org.junit.jupiter:junit-jupiter-api') + api('org.junit.jupiter:junit-jupiter-params') api('org.assertj:assertj-core') api('org.mockito:mockito-core') @@ -60,6 +62,9 @@ dependencies { api('org.skyscreamer:jsonassert') + implementation('org.junit.jupiter:junit-jupiter-engine') + implementation('org.junit.vintage:junit-vintage-engine') + testImplementation('pl.pragmatists:JUnitParams') } diff --git a/geode-junit/src/test/java/org/apache/geode/test/junit/rules/ConcurrencyRuleTest.java b/geode-junit/src/test/java/org/apache/geode/test/junit/rules/ConcurrencyRuleTest.java index cf2d35f..257526f 100644 --- a/geode-junit/src/test/java/org/apache/geode/test/junit/rules/ConcurrencyRuleTest.java +++ b/geode-junit/src/test/java/org/apache/geode/test/junit/rules/ConcurrencyRuleTest.java @@ -33,11 +33,11 @@ import java.util.function.Consumer; import junitparams.JUnitParamsRunner; import junitparams.Parameters; import org.junit.Before; -import org.junit.ComparisonFailure; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.model.MultipleFailureException; +import org.opentest4j.AssertionFailedError; @RunWith(JUnitParamsRunner.class) public class ConcurrencyRuleTest { @@ -398,7 +398,7 @@ public class ConcurrencyRuleTest { .repeatForDuration(Duration.ofSeconds(2)); assertThatThrownBy(() -> execution.execute(concurrencyRule)) - .isInstanceOf(ComparisonFailure.class); + .isInstanceOf(AssertionFailedError.class); assertThat(invoked.get()).isTrue(); } @@ -518,8 +518,8 @@ public class ConcurrencyRuleTest { assertThat(errors.get(0)).isInstanceOf(AssertionError.class) .hasMessageContaining(IOException.class.getName()); assertThat(errors.get(1)).isInstanceOf(AssertionError.class) - .hasMessageContaining("[successful] value") - .hasMessageContaining("[wrong] value"); + .hasMessageContaining("successful value") + .hasMessageContaining("wrong value"); assertThat(errors.get(2)).hasMessageContaining("foo") .isInstanceOf(IOException.class); } diff --git a/geode-junit/src/test/resources/expected-pom.xml b/geode-junit/src/test/resources/expected-pom.xml index f319e20..58918de 100644 --- a/geode-junit/src/test/resources/expected-pom.xml +++ b/geode-junit/src/test/resources/expected-pom.xml @@ -58,6 +58,16 @@ </exclusions> </dependency> <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-params</artifactId> + <scope>compile</scope> + </dependency> + <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <scope>compile</scope> @@ -138,5 +148,14 @@ <artifactId>jsonassert</artifactId> <scope>compile</scope> </dependency> - </dependencies> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-engine</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.junit.vintage</groupId> + <artifactId>junit-vintage-engine</artifactId> + <scope>runtime</scope> + </dependency> </dependencies> </project> diff --git a/geode-rebalancer/build.gradle b/geode-rebalancer/build.gradle index e5892d4..96911f1 100644 --- a/geode-rebalancer/build.gradle +++ b/geode-rebalancer/build.gradle @@ -38,6 +38,7 @@ dependencies { } testImplementation('junit:junit') + testImplementation('org.junit.vintage:junit-vintage-engine') testImplementation('org.assertj:assertj-core') testImplementation('org.mockito:mockito-core') diff --git a/gradle/test.gradle b/gradle/test.gradle index 9e31f56..f3f7a25 100644 --- a/gradle/test.gradle +++ b/gradle/test.gradle @@ -31,6 +31,7 @@ compileTestJava { } test { + useJUnitPlatform {} doFirst { TestPropertiesWriter.writeTestProperties(buildDir, name) } @@ -91,7 +92,7 @@ configure([integrationTest, distributedTest, performanceTest, acceptanceTest, ui } configure([integrationTest, distributedTest, performanceTest]) { - useJUnit { + useJUnitPlatform { if (project.hasProperty("testCategory")) { includeCategories += project.testCategory } @@ -135,6 +136,7 @@ task repeatUnitTest(type: RepeatTest) { } configure([integrationTest, distributedTest, performanceTest, acceptanceTest, uiTest, upgradeTest]) { + useJUnitPlatform {} if (project.hasProperty('excludeTest')) { exclude project.getProperty('excludeTest').split(',') } @@ -143,7 +145,7 @@ configure([integrationTest, distributedTest, performanceTest, acceptanceTest, ui configure([repeatDistributedTest, repeatIntegrationTest, repeatUpgradeTest, repeatUnitTest, repeatAcceptanceTest]) { times = Integer.parseInt(repeat) forkEvery 1 - useJUnit {} + useJUnitPlatform {} outputs.upToDateWhen { false } if (project.hasProperty("failOnNoMatchingTests")) { diff --git a/static-analysis/pmd-rules/build.gradle b/static-analysis/pmd-rules/build.gradle index 84f3a95..9484744 100644 --- a/static-analysis/pmd-rules/build.gradle +++ b/static-analysis/pmd-rules/build.gradle @@ -20,6 +20,7 @@ apply from: "${rootDir}/${scriptDir}/warnings.gradle" dependencies { implementation(platform(project(':boms:geode-all-bom'))) + testRuntimeOnly('org.junit.vintage:junit-vintage-engine') implementation('net.sourceforge.pmd:pmd-java') testImplementation('net.sourceforge.pmd:pmd-test') }