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`. diff --git a/src/main/resources/META-INF/jqassistant-rules/junit4.xml b/src/main/resources/META-INF/jqassistant-rules/junit4.xml index 66da5d8..9abe44f 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)-[:OF_TYPE]->({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..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 @@ -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..06ba29d --- /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 JUnit 4 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() { + } + } + +}