From 855c80328ddbf0c81d4dbcc5b19856b50b8de627 Mon Sep 17 00:00:00 2001 From: Michael Osl Date: Tue, 20 Jul 2021 15:42:39 +0200 Subject: [PATCH 1/3] Implement new Concept "junit4:RunWith" --- .../META-INF/jqassistant-rules/junit4.xml | 11 ++++++++ .../plugin/junit/test/rule/Junit4IT.java | 19 +++++++++++--- .../test/set/junit4/EnclosedTestClass.java | 25 +++++++++++++++++++ 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 src/test/java/com/buschmais/jqassistant/plugin/junit/test/set/junit4/EnclosedTestClass.java diff --git a/src/main/resources/META-INF/jqassistant-rules/junit4.xml b/src/main/resources/META-INF/jqassistant-rules/junit4.xml index 66da5d8..e21f907 100644 --- a/src/main/resources/META-INF/jqassistant-rules/junit4.xml +++ b/src/main/resources/META-INF/jqassistant-rules/junit4.xml @@ -161,4 +161,15 @@ ]]> + + Labels all classes annotated with org.junit.runner.RunWith with "Junit4" and "Test". + (target)-[x:OF_TYPE]-(y {fqn:"org.junit.runner.RunWith"}) + SET + source:Junit4:Test + RETURN + source + ]]> + diff --git a/src/test/java/com/buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java b/src/test/java/com/buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java index 1bfe1c4..c89cf27 100644 --- a/src/test/java/com/buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java +++ b/src/test/java/com/buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java @@ -9,12 +9,10 @@ import com.buschmais.jqassistant.core.rule.api.model.RuleException; import com.buschmais.jqassistant.plugin.common.test.scanner.MapBuilder; import com.buschmais.jqassistant.plugin.java.api.model.MethodDescriptor; -import com.buschmais.jqassistant.plugin.junit.test.set.junit4.Assertions4Junit4; -import com.buschmais.jqassistant.plugin.junit.test.set.junit4.IgnoredTest; -import com.buschmais.jqassistant.plugin.junit.test.set.junit4.TestClass; -import com.buschmais.jqassistant.plugin.junit.test.set.junit4.TestSuite; +import com.buschmais.jqassistant.plugin.junit.test.set.junit4.*; import org.junit.Assert; +import org.junit.experimental.runners.Enclosed; import org.junit.jupiter.api.Test; import static com.buschmais.jqassistant.core.report.api.model.Result.Status.SUCCESS; @@ -235,6 +233,19 @@ public void afterClassMethod() throws Exception { store.commitTransaction(); } + /** + * Verifies the concept "junit4:RunWith". + */ + @Test + public void runWith() throws Exception { + scanClasses(EnclosedTestClass.class); + assertThat(applyConcept("junit4:RunWith").getStatus(), equalTo(SUCCESS)); + store.beginTransaction(); + List methods = query("match (m:Junit4:Test {name:\"EnclosedTestClass\"}) return m").getColumn("m"); + assertThat(methods, hasItem(typeDescriptor(EnclosedTestClass.class))); + store.commitTransaction(); + } + /** * Verifies the group "junit4:default". */ diff --git a/src/test/java/com/buschmais/jqassistant/plugin/junit/test/set/junit4/EnclosedTestClass.java b/src/test/java/com/buschmais/jqassistant/plugin/junit/test/set/junit4/EnclosedTestClass.java new file mode 100644 index 0000000..bcfc031 --- /dev/null +++ b/src/test/java/com/buschmais/jqassistant/plugin/junit/test/set/junit4/EnclosedTestClass.java @@ -0,0 +1,25 @@ +package com.buschmais.jqassistant.plugin.junit.test.set.junit4; + +import org.junit.*; +import org.junit.experimental.runners.Enclosed; +import org.junit.runner.RunWith; + +/** + * A JUnit4 test classes using enclosed test classes. + */ +@RunWith(Enclosed.class) +public class EnclosedTestClass { + + public static class FirstTest { + @Test + public void testMethod() { + } + } + + public static class SecondTest { + @Test + public void testMethod() { + } + } + +} From e357c78e3abde92116eb60901509eba255f8113e Mon Sep 17 00:00:00 2001 From: Michael Osl Date: Wed, 21 Jul 2021 13:43:49 +0200 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: Oliver B. Fischer --- src/main/resources/META-INF/jqassistant-rules/junit4.xml | 2 +- .../buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java | 2 +- .../plugin/junit/test/set/junit4/EnclosedTestClass.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/META-INF/jqassistant-rules/junit4.xml b/src/main/resources/META-INF/jqassistant-rules/junit4.xml index e21f907..9abe44f 100644 --- a/src/main/resources/META-INF/jqassistant-rules/junit4.xml +++ b/src/main/resources/META-INF/jqassistant-rules/junit4.xml @@ -165,7 +165,7 @@ Labels all classes annotated with org.junit.runner.RunWith with "Junit4" and "Test". (target)-[x:OF_TYPE]-(y {fqn:"org.junit.runner.RunWith"}) + (source:Type)-[:ANNOTATED_BY]->(target)-[:OF_TYPE]->({fqn:"org.junit.runner.RunWith"}) SET source:Junit4:Test RETURN diff --git a/src/test/java/com/buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java b/src/test/java/com/buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java index c89cf27..21aaae2 100644 --- a/src/test/java/com/buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java +++ b/src/test/java/com/buschmais/jqassistant/plugin/junit/test/rule/Junit4IT.java @@ -241,7 +241,7 @@ public void runWith() throws Exception { scanClasses(EnclosedTestClass.class); assertThat(applyConcept("junit4:RunWith").getStatus(), equalTo(SUCCESS)); store.beginTransaction(); - List methods = query("match (m:Junit4:Test {name:\"EnclosedTestClass\"}) return m").getColumn("m"); + List methods = query("MATCH (m:Junit4:Test {name:\"EnclosedTestClass\"}) RETURN m").getColumn("m"); assertThat(methods, hasItem(typeDescriptor(EnclosedTestClass.class))); store.commitTransaction(); } diff --git a/src/test/java/com/buschmais/jqassistant/plugin/junit/test/set/junit4/EnclosedTestClass.java b/src/test/java/com/buschmais/jqassistant/plugin/junit/test/set/junit4/EnclosedTestClass.java index bcfc031..06ba29d 100644 --- a/src/test/java/com/buschmais/jqassistant/plugin/junit/test/set/junit4/EnclosedTestClass.java +++ b/src/test/java/com/buschmais/jqassistant/plugin/junit/test/set/junit4/EnclosedTestClass.java @@ -5,7 +5,7 @@ import org.junit.runner.RunWith; /** - * A JUnit4 test classes using enclosed test classes. + * A JUnit 4 test classes using enclosed test classes. */ @RunWith(Enclosed.class) public class EnclosedTestClass { From 475206280f6411fda2c22a8772ea06a34bfa0867 Mon Sep 17 00:00:00 2001 From: Michael Osl Date: Wed, 21 Jul 2021 14:08:24 +0200 Subject: [PATCH 3/3] Add release notes for junit4:RunWith --- src/main/asciidoc/release-notes.adoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/asciidoc/release-notes.adoc b/src/main/asciidoc/release-notes.adoc index e41fff8..73ba91c 100644 --- a/src/main/asciidoc/release-notes.adoc +++ b/src/main/asciidoc/release-notes.adoc @@ -1,6 +1,11 @@ = JUnit Plugin +== 1.11.0 + +* Added new concept `junit4:RunWith` +** This concept labels all classes annotated with `org.junit.runner.RunWith` with `Junit4` and `Test`. + == 1.10.0 * Added support for additional assert methods to concept `junit5:AssertMethod`.