From 31ab9592372ef02fd086cddcc1e38ac79ac71408 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 14 Jan 2016 16:41:20 +0100 Subject: [PATCH] accept secondary setup methods (IDEA-150310) --- .../src/com/intellij/execution/junit/JUnitUtil.java | 4 ++-- .../com/intellij/execution/junit/JUnit4Framework.java | 1 + .../com/theoryinpractice/testng/TestNGFramework.java | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java b/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java index 9e088f81785b..74bf67d2c428 100644 --- a/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java +++ b/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java @@ -55,8 +55,8 @@ public class JUnitUtil { public static final String BEFORE_ANNOTATION_NAME = "org.junit.Before"; public static final String AFTER_ANNOTATION_NAME = "org.junit.After"; public static final String PARAMETRIZED_PARAMETERS_ANNOTATION_NAME = "org.junit.runners.Parameterized.Parameters"; - private static final String AFTER_CLASS_ANNOTATION_NAME = "org.junit.AfterClass"; - private static final String BEFORE_CLASS_ANNOTATION_NAME = "org.junit.BeforeClass"; + public static final String AFTER_CLASS_ANNOTATION_NAME = "org.junit.AfterClass"; + public static final String BEFORE_CLASS_ANNOTATION_NAME = "org.junit.BeforeClass"; private static final Collection CONFIGURATIONS_ANNOTATION_NAME = Collections.unmodifiableList( Arrays.asList(DATA_POINT, AFTER_ANNOTATION_NAME, BEFORE_ANNOTATION_NAME, AFTER_CLASS_ANNOTATION_NAME, BEFORE_CLASS_ANNOTATION_NAME)); diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnit4Framework.java b/plugins/junit/src/com/intellij/execution/junit/JUnit4Framework.java index aa8af2fc46ff..30c271ebe6ed 100644 --- a/plugins/junit/src/com/intellij/execution/junit/JUnit4Framework.java +++ b/plugins/junit/src/com/intellij/execution/junit/JUnit4Framework.java @@ -96,6 +96,7 @@ public class JUnit4Framework extends JavaTestFramework { method = createSetUpPatternMethod(factory); PsiMethod existingMethod = clazz.findMethodBySignature(method, false); if (existingMethod != null) { + if (AnnotationUtil.isAnnotated(existingMethod, JUnitUtil.BEFORE_CLASS_ANNOTATION_NAME, false)) return existingMethod; int exit = ApplicationManager.getApplication().isUnitTestMode() ? Messages.OK : Messages.showOkCancelDialog("Method setUp already exist but is not annotated as @Before. Annotate?", diff --git a/plugins/testng/src/com/theoryinpractice/testng/TestNGFramework.java b/plugins/testng/src/com/theoryinpractice/testng/TestNGFramework.java index d67a45c20a5f..9ac273ad70ea 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/TestNGFramework.java +++ b/plugins/testng/src/com/theoryinpractice/testng/TestNGFramework.java @@ -36,8 +36,16 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import javax.swing.*; +import java.util.Arrays; +import java.util.List; public class TestNGFramework extends JavaTestFramework { + private final static List SECONDARY_BEFORE_ANNOTATIONS = Arrays.asList("org.testng.annotations.BeforeTest", + "org.testng.annotations.BeforeClass", + "org.testng.annotations.BeforeSuite", + "org.testng.annotations.BeforeGroups" + ); + @NotNull public String getName() { return "TestNG"; @@ -97,6 +105,9 @@ public class TestNGFramework extends JavaTestFramework { PsiMethod patternMethod = createSetUpPatternMethod(factory); PsiMethod inClass = clazz.findMethodBySignature(patternMethod, false); if (inClass != null) { + if (AnnotationUtil.isAnnotated(inClass, SECONDARY_BEFORE_ANNOTATIONS, false)) { + return inClass; + } int exit = ApplicationManager.getApplication().isUnitTestMode() ? Messages.YES : Messages.showYesNoDialog(manager.getProject(), "Method \'" + setUpName + "\' already exist but is not annotated as @BeforeMethod.",