From cbed9359e2a422f576b10307bd8afd380ee03e07 Mon Sep 17 00:00:00 2001 From: UNV Date: Tue, 21 Jul 2026 19:59:50 +0300 Subject: [PATCH] Adding missing @Override annotations. Some refactoring. --- .../intellij/junit3/JUnit3IdeaTestRunner.java | 48 ++++++---- .../com/intellij/junit3/TestRunnerUtil.java | 3 + .../java/com/intellij/junit4/IdeaSuite.java | 28 +++--- .../junit4/JUnit45ClassesRequestBuilder.java | 11 +++ .../intellij/junit4/JUnit4IdeaTestRunner.java | 60 +++++++------ .../intellij/junit4/JUnit4TestListener.java | 87 ++++++++++--------- .../intellij/junit4/JUnit4TestRunnerUtil.java | 36 ++++---- .../junit4/JUnitTestDiscoveryListener.java | 2 + .../rt/execution/junit/DeafStream.java | 1 + .../execution/junit/JUnitForkedSplitter.java | 16 ++-- .../rt/execution/junit/MapSerializerUtil.java | 2 + .../intellij/rt/execution/junit/RunOnce.java | 9 +- .../execution/junit/JUnit3Framework.java | 9 +- .../execution/junit/JUnit4Framework.java | 15 +++- .../execution/junit/JUnit5Framework.java | 41 ++++++--- .../execution/junit/JUnitConfiguration.java | 17 ++-- .../intellij/execution/junit/JUnitUtil.java | 1 + .../execution/junit/TestClassFilter.java | 10 ++- .../configuration/JUnitConfigurable.java | 24 ++--- 19 files changed, 256 insertions(+), 164 deletions(-) diff --git a/junit-rt/src/main/java/com/intellij/junit3/JUnit3IdeaTestRunner.java b/junit-rt/src/main/java/com/intellij/junit3/JUnit3IdeaTestRunner.java index cbf3c86..a83bd98 100644 --- a/junit-rt/src/main/java/com/intellij/junit3/JUnit3IdeaTestRunner.java +++ b/junit-rt/src/main/java/com/intellij/junit3/JUnit3IdeaTestRunner.java @@ -49,11 +49,13 @@ public JUnit3IdeaTestRunner() { super(DeafStream.DEAF_PRINT_STREAM); } + @Override public void createListeners(ArrayList listeners, int count) { myTestsListener = new SMTestListener(); myListeners = listeners; } + @Override public int startRunnerWithArgs(String[] args, String name, int count, boolean sendTree) { setPrinter(new MockResultPrinter()); try { @@ -69,55 +71,66 @@ public int startRunnerWithArgs(String[] args, String name, int count, boolean se } } + @Override public void clearStatus() { super.clearStatus(); } + @Override public void runFailed(String message) { super.runFailed(message); } + @Override public Object getTestToStart(String[] args, String name) { return TestRunnerUtil.getTestSuite(this, args); } + @Override public List getChildTests(Object description) { - return getTestCasesOf((Test)description); + return getTestCasesOf((Test) description); } + @Override public String getTestClassName(Object child) { - return child instanceof TestSuite ? ((TestSuite)child).getName() : child.getClass().getName(); + return child instanceof TestSuite ? ((TestSuite) child).getName() : child.getClass().getName(); } + @Override public String getStartDescription(Object child) { - final Test test = (Test)child; - return test instanceof TestCase - ? test.getClass().getName() + "," + ((TestCase)test).getName() - : test.toString(); + final Test test = (Test) child; + return test instanceof TestCase + ? test.getClass().getName() + "," + ((TestCase) test).getName() + : test.toString(); } + @Override protected TestResult createTestResult() { TestResult testResult = super.createTestResult(); testResult.addListener(myTestsListener); try { for (int i = 0; i < myListeners.size(); i++) { - final IDEAJUnitListener junitListener = (IDEAJUnitListener)Class.forName((String)myListeners.get(i)).newInstance(); + final IDEAJUnitListener junitListener = (IDEAJUnitListener) Class.forName((String) myListeners.get(i)).newInstance(); testResult.addListener(new TestListener() { + @Override public void addError(Test test, Throwable t) { } + @Override public void addFailure(Test test, AssertionFailedError t) { } + @Override public void endTest(Test test) { if (test instanceof TestCase) { - junitListener.testFinished(test.getClass().getName(), ((TestCase)test).getName()); + junitListener.testFinished(test.getClass().getName(), ((TestCase) test).getName()); } } + @Override public void startTest(Test test) { if (test instanceof TestCase) { - junitListener.testStarted(test.getClass().getName(), ((TestCase)test).getName()); + junitListener.testStarted(test.getClass().getName(), ((TestCase) test).getName()); } } }); @@ -129,6 +142,7 @@ public void startTest(Test test) { return testResult; } + @Override public TestResult doRun(Test suite, boolean wait) { //todo final TestResult testResult = super.doRun(suite, wait); myTestsListener.finishSuite(); @@ -139,12 +153,12 @@ public TestResult doRun(Test suite, boolean wait) { //todo static Vector getTestCasesOf(Test test) { Vector testCases = new Vector(); if (test instanceof TestRunnerUtil.SuiteMethodWrapper) { - test = ((TestRunnerUtil.SuiteMethodWrapper)test).getSuite(); + test = ((TestRunnerUtil.SuiteMethodWrapper) test).getSuite(); } if (test instanceof TestSuite) { - for (Enumeration each = ((TestSuite)test).tests(); each.hasMoreElements(); ) { + for (Enumeration each = ((TestSuite) test).tests(); each.hasMoreElements(); ) { Object childTest = each.nextElement(); - if (childTest instanceof TestSuite && !((TestSuite)childTest).tests().hasMoreElements()) { + if (childTest instanceof TestSuite && !((TestSuite) childTest).tests().hasMoreElements()) { continue; } testCases.addElement(childTest); @@ -163,6 +177,7 @@ private static class SMTestListener implements TestListener { private String myClassName; private long myCurrentTestStart; + @Override public void addError(Test test, Throwable e) { testFailure(e, MapSerializerUtil.TEST_FAILED, getMethodName(test)); } @@ -178,7 +193,7 @@ private void testFailure(Throwable failure, String messageName, String methodNam final String trace = getTrace(failure); ComparisonFailureData notification = null; if (failure instanceof FileComparisonFailure) { - FileComparisonFailure comparisonFailure = (FileComparisonFailure)failure; + FileComparisonFailure comparisonFailure = (FileComparisonFailure) failure; notification = new ComparisonFailureData(comparisonFailure.getExpected(), comparisonFailure.getActual(), comparisonFailure.getFilePath(), comparisonFailure.getActualFilePath() ); @@ -224,16 +239,19 @@ private static String getClassName(Test test) { : null; } + @Override public void addFailure(Test test, AssertionFailedError e) { addError(test, e); } + @Override public void endTest(Test test) { final long duration = System.currentTimeMillis() - myCurrentTestStart; System.out.println("\n##teamcity[testFinished name=\'" + escapeName(getMethodName(test)) + (duration > 0 ? "\' duration=\'" + Long.toString(duration) : "") + "\']"); } + @Override public void startTest(Test test) { myCurrentTestStart = System.currentTimeMillis(); final String className = getClassName(test); @@ -242,13 +260,13 @@ public void startTest(Test test) { myClassName = className; System.out.println( "##teamcity[testSuiteStarted name =\'" + escapeName(myClassName) + - "\' locationHint=\'java:suite://" + escapeName(className) + "\']" + "\' locationHint=\'java:suite://" + escapeName(className) + "\']" ); } final String methodName = getMethodName(test); System.out.println( "##teamcity[testStarted name=\'" + escapeName(methodName) + - "\' locationHint=\'java:test://" + escapeName(className + "." + methodName) + "\']" + "\' locationHint=\'java:test://" + escapeName(className + "." + methodName) + "\']" ); } diff --git a/junit-rt/src/main/java/com/intellij/junit3/TestRunnerUtil.java b/junit-rt/src/main/java/com/intellij/junit3/TestRunnerUtil.java index 12ed015..8c2ae89 100644 --- a/junit-rt/src/main/java/com/intellij/junit3/TestRunnerUtil.java +++ b/junit-rt/src/main/java/com/intellij/junit3/TestRunnerUtil.java @@ -258,6 +258,7 @@ public String getMessage() { return myMessage; } + @Override protected void runTest() throws Throwable { try { //noinspection Since15 @@ -282,10 +283,12 @@ public String getClassName() { return myClassName; } + @Override public int countTestCases() { return mySuite.countTestCases(); } + @Override public void run(TestResult result) { mySuite.run(result); } diff --git a/junit-rt/src/main/java/com/intellij/junit4/IdeaSuite.java b/junit-rt/src/main/java/com/intellij/junit4/IdeaSuite.java index fb14ae6..e660bd7 100644 --- a/junit-rt/src/main/java/com/intellij/junit4/IdeaSuite.java +++ b/junit-rt/src/main/java/com/intellij/junit4/IdeaSuite.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.junit4; import junit.framework.Test; @@ -44,15 +43,15 @@ public IdeaSuite(final RunnerBuilder builder, Class[] classes, String name) thro myName = name; } + @Override public Description getDescription() { Description description = Description.createSuiteDescription(myName, getTestClass().getAnnotations()); try { final Method getFilteredChildrenMethod = ParentRunner.class.getDeclaredMethod("getFilteredChildren", new Class[0]); getFilteredChildrenMethod.setAccessible(true); Collection filteredChildren = (Collection)getFilteredChildrenMethod.invoke(this); - for (Iterator iterator = filteredChildren.iterator(); iterator.hasNext(); ) { - Object child = iterator.next(); - description.addChild(describeChild((Runner)child)); + for (Object child : filteredChildren) { + description.addChild(describeChild((Runner) child)); } } catch (Exception e) { @@ -61,24 +60,25 @@ public Description getDescription() { return description; } + @Override protected Description describeChild(Runner child) { final Description superDescription = super.describeChild(child); if (child instanceof ClassAwareSuiteMethod) { final Description description = Description.createSuiteDescription(((ClassAwareSuiteMethod)child).getKlass()); ArrayList children = superDescription.getChildren(); - for (int i = 0, size = children.size(); i < size; i++) { - description.addChild((Description)children.get(i)); + for (Object aChildren : children) { + description.addChild((Description) aChildren); } return description; } return superDescription; } + @Override protected List getChildren() { final List children = new ArrayList<>(super.getChildren()); boolean containsSuiteInside = false; - for (Iterator iterator = children.iterator(); iterator.hasNext(); ) { - Object child = iterator.next(); + for (Runner child : children) { if (isSuite(child)) { containsSuiteInside = true; break; @@ -89,12 +89,10 @@ protected List getChildren() { } try { final Set allNames = new HashSet(); - for (Iterator iterator = children.iterator(); iterator.hasNext(); ) { - final Runner child = iterator.next(); + for (final Runner child : children) { allNames.add(describeChild(child).getDisplayName()); } - for (Iterator iterator = children.iterator(); iterator.hasNext(); ) { - final Object child = iterator.next(); + for (final Runner child : children) { if (isSuite(child)) { skipSuiteComponents(allNames, child); } @@ -107,7 +105,7 @@ protected List getChildren() { } } } - catch (Throwable e) { + catch (Throwable ignored) { } return children; } @@ -122,8 +120,8 @@ private void skipSuiteComponents(Set allNames, Object child) { final Method getChildrenMethod = Suite.class.getDeclaredMethod("getChildren", new Class[0]); getChildrenMethod.setAccessible(true); final List tests = (List)getChildrenMethod.invoke(child); - for (Iterator suiteIterator = tests.iterator(); suiteIterator.hasNext(); ) { - final String displayName = describeChild((Runner)suiteIterator.next()).getDisplayName(); + for (Object test : tests) { + final String displayName = describeChild((Runner) test).getDisplayName(); if (allNames.contains(displayName)) { allNames.remove(displayName); } diff --git a/junit-rt/src/main/java/com/intellij/junit4/JUnit45ClassesRequestBuilder.java b/junit-rt/src/main/java/com/intellij/junit4/JUnit45ClassesRequestBuilder.java index d9a685e..38f04ff 100644 --- a/junit-rt/src/main/java/com/intellij/junit4/JUnit45ClassesRequestBuilder.java +++ b/junit-rt/src/main/java/com/intellij/junit4/JUnit45ClassesRequestBuilder.java @@ -51,19 +51,24 @@ public static Request getClassesRequest(String suiteName, Class[] classes) { static Request createIgnoreIgnoredClassRequest(final Class clazz, final boolean recursively) throws ClassNotFoundException { Class.forName("org.junit.runners.BlockJUnit4ClassRunner"); //ignore IgnoreIgnored for junit4.4 and < return new ClassRequest(clazz) { + @Override public Runner getRunner() { try { return new AllDefaultPossibilitiesBuilder(true) { + @Override protected IgnoredBuilder ignoredBuilder() { return new IgnoredBuilder() { + @Override public Runner runnerForClass(Class testClass) { return null; } }; } + @Override protected JUnit4Builder junit4Builder() { return new JUnit4Builder() { + @Override public Runner runnerForClass(Class testClass) throws Throwable { if (!recursively) { return super.runnerForClass(testClass); @@ -73,6 +78,7 @@ public Runner runnerForClass(Class testClass) throws Throwable { BlockJUnit4ClassRunner.class.getDeclaredMethod("isIgnored", FrameworkMethod.class); if (ignored != null) { return new BlockJUnit4ClassRunner(testClass) { + @Override protected boolean isIgnored(FrameworkMethod child) { return false; } @@ -83,6 +89,7 @@ protected boolean isIgnored(FrameworkMethod child) { } //older versions return new BlockJUnit4ClassRunner(testClass) { + @Override protected void runChild(FrameworkMethod method, RunNotifier notifier) { final Description description = describeChild(method); final EachTestNotifier eachNotifier = new EachTestNotifier(notifier, description); @@ -115,16 +122,20 @@ protected void runChild(FrameworkMethod method, RunNotifier notifier) { static Runner createIgnoreAnnotationAndJUnit4ClassRunner(Class clazz) throws Throwable { return new AllDefaultPossibilitiesBuilder(true) { + @Override protected AnnotatedBuilder annotatedBuilder() { return new AnnotatedBuilder(this) { + @Override public Runner runnerForClass(Class testClass) throws Exception { return null; } }; } + @Override protected JUnit4Builder junit4Builder() { return new JUnit4Builder() { + @Override public Runner runnerForClass(Class testClass) throws Throwable { return null; } diff --git a/junit-rt/src/main/java/com/intellij/junit4/JUnit4IdeaTestRunner.java b/junit-rt/src/main/java/com/intellij/junit4/JUnit4IdeaTestRunner.java index 424271f..1014148 100644 --- a/junit-rt/src/main/java/com/intellij/junit4/JUnit4IdeaTestRunner.java +++ b/junit-rt/src/main/java/com/intellij/junit4/JUnit4IdeaTestRunner.java @@ -15,36 +15,33 @@ */ package com.intellij.junit4; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - +import com.intellij.rt.execution.junit.ComparisonFailureData; +import com.intellij.rt.execution.junit.IDEAJUnitListener; +import com.intellij.rt.execution.junit.IDEAJUnitListenerEx; +import com.intellij.rt.execution.junit.IdeaTestRunner; import org.junit.internal.requests.ClassRequest; import org.junit.internal.requests.FilterRequest; -import org.junit.runner.Description; -import org.junit.runner.JUnitCore; -import org.junit.runner.Request; -import org.junit.runner.Result; -import org.junit.runner.Runner; +import org.junit.runner.*; import org.junit.runner.manipulation.Filter; import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunListener; -import com.intellij.rt.execution.junit.ComparisonFailureData; -import com.intellij.rt.execution.junit.IDEAJUnitListener; -import com.intellij.rt.execution.junit.IDEAJUnitListenerEx; -import com.intellij.rt.execution.junit.IdeaTestRunner; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; /** @noinspection UnusedDeclaration*/ public class JUnit4IdeaTestRunner implements IdeaTestRunner { private JUnit4TestListener myTestsListener; private ArrayList myListeners; + @Override public void createListeners(ArrayList listeners, int count) { myListeners = listeners; myTestsListener = new JUnit4TestListener(); } + @Override public int startRunnerWithArgs(String[] args, String name, int count, boolean sendTree) { try { final Request request = JUnit4TestRunnerUtil.buildRequest(args, name, sendTree); @@ -67,8 +64,8 @@ public int startRunnerWithArgs(String[] args, String name, int count, boolean se final JUnitCore runner = new JUnitCore(); runner.addListener(myTestsListener); - for (Iterator iterator = myListeners.iterator(); iterator.hasNext(); ) { - final IDEAJUnitListener junitListener = (IDEAJUnitListener)Class.forName((String)iterator.next()).newInstance(); + for (Object myListener : myListeners) { + final IDEAJUnitListener junitListener = (IDEAJUnitListener) Class.forName((String) myListener).newInstance(); runner.addListener(new MyCustomRunListenerWrapper(junitListener, description.getDisplayName())); } final Result result = runner.run(testRunner); @@ -117,8 +114,7 @@ private static Description getFilteredDescription( try { final Description failedTestsDescription = Description.createSuiteDescription(filterDescription, null); if (filterDescription.startsWith("Tests") || filterDescription.startsWith("Ignored")) { - for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext(); ) { - final Description childDescription = (Description)iterator.next(); + for (Description childDescription : description.getChildren()) { if (filter.shouldRun(childDescription)) { failedTestsDescription.addChild(childDescription); } @@ -140,10 +136,8 @@ private static boolean canCompress(Description description) { return !description.isTest() && description.testCount() == 1; } - private static Description getSuiteMethodDescription( - Request request, - Description description - ) throws NoSuchFieldException, IllegalAccessException { + private static Description getSuiteMethodDescription(Request request, Description description) + throws NoSuchFieldException, IllegalAccessException { Field field; try { field = ClassRequest.class.getDeclaredField("fTestClass"); @@ -153,14 +147,14 @@ private static Description getSuiteMethodDescription( } field.setAccessible(true); final Description methodDescription = Description.createSuiteDescription((Class)field.get(request)); - for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext(); ) { - methodDescription.addChild((Description)iterator.next()); + for (Description childDescription : description.getChildren()) { + methodDescription.addChild(childDescription); } description = methodDescription; return description; } - + @Override public Object getTestToStart(String[] args, String name) { final Request request = JUnit4TestRunnerUtil.buildRequest(args, name, false); if (request == null) { @@ -178,14 +172,17 @@ public Object getTestToStart(String[] args, String name) { } } + @Override public List getChildTests(Object description) { return ((Description)description).getChildren(); } + @Override public String getTestClassName(Object child) { return ((Description)child).getClassName(); } + @Override public String getStartDescription(Object child) { final Description description = (Description)child; final String methodName = description.getMethodName(); @@ -202,43 +199,50 @@ public MyCustomRunListenerWrapper(IDEAJUnitListener junitListener, String displa myDisplayName = displayName; } + @Override public void testStarted(Description description) throws Exception { mySuccess = true; myJunitListener.testStarted(JUnit4ReflectionUtil.getClassName(description), JUnit4ReflectionUtil.getMethodName(description)); } + @Override public void testFailure(Failure failure) throws Exception { mySuccess = ComparisonFailureData.isAssertionError(failure.getException().getClass()); } + @Override public void testAssumptionFailure(Failure failure) { mySuccess = false; } + @Override public void testIgnored(Description description) throws Exception { mySuccess = false; } + @Override public void testFinished(Description description) throws Exception { final String className = JUnit4ReflectionUtil.getClassName(description); final String methodName = JUnit4ReflectionUtil.getMethodName(description); if (myJunitListener instanceof IDEAJUnitListenerEx) { - ((IDEAJUnitListenerEx)myJunitListener).testFinished(className, methodName, mySuccess); + ((IDEAJUnitListenerEx) myJunitListener).testFinished(className, methodName, mySuccess); } else { myJunitListener.testFinished(className, methodName); } } + @Override public void testRunStarted(Description description) throws Exception { if (myJunitListener instanceof IDEAJUnitListenerEx) { - ((IDEAJUnitListenerEx)myJunitListener).testRunStarted(description.getDisplayName()); + ((IDEAJUnitListenerEx) myJunitListener).testRunStarted(description.getDisplayName()); } } + @Override public void testRunFinished(Result result) throws Exception { if (myJunitListener instanceof IDEAJUnitListenerEx) { - ((IDEAJUnitListenerEx)myJunitListener).testRunFinished(myDisplayName); + ((IDEAJUnitListenerEx) myJunitListener).testRunFinished(myDisplayName); } } } diff --git a/junit-rt/src/main/java/com/intellij/junit4/JUnit4TestListener.java b/junit-rt/src/main/java/com/intellij/junit4/JUnit4TestListener.java index 5f08803..c599fd7 100644 --- a/junit-rt/src/main/java/com/intellij/junit4/JUnit4TestListener.java +++ b/junit-rt/src/main/java/com/intellij/junit4/JUnit4TestListener.java @@ -35,15 +35,15 @@ public class JUnit4TestListener extends RunListener { public static final String EMPTY_SUITE_WARNING = "warning"; public static final String CLASS_CONFIGURATION = "Class Configuration"; - private List myStartedSuites = new ArrayList(); - private Map myParents = new HashMap(); - private Map myMethodNames = new HashMap(); + private List myStartedSuites = new ArrayList<>(); + private Map>> myParents = new HashMap<>(); + private Map myMethodNames = new HashMap<>(); private final PrintStream myPrintStream; private String myRootName; private long myCurrentTestStart; private Description myCurrentTest; - private Map myWaitingQueue = new LinkedHashMap(); + private Map myWaitingQueue = new LinkedHashMap<>(); public JUnit4TestListener() { @@ -59,6 +59,7 @@ private static String escapeName(String str) { return MapSerializerUtil.escapeStr(str, MapSerializerUtil.STD_ESCAPER); } + @Override public void testRunStarted(Description description) throws Exception { if (myRootName != null && !myRootName.startsWith("[")) { int lastPointIdx = myRootName.lastIndexOf('.'); @@ -79,26 +80,28 @@ public void testRunStarted(Description description) throws Exception { } } + @Override public void testRunFinished(Result result) { try { dumpQueue(true); } finally { for (int i = myStartedSuites.size() - 1; i >= 0; i--) { - Object parent = JUnit4ReflectionUtil.getClassName((Description)myStartedSuites.get(i)); + Object parent = JUnit4ReflectionUtil.getClassName(myStartedSuites.get(i)); myPrintStream.println("\n##teamcity[testSuiteFinished name=\'" + escapeName(getShortName((String)parent)) + "\']"); } myStartedSuites.clear(); } } + @Override public void testStarted(Description description) { testStarted(description, null); } private void testStarted(Description description, String methodName) { - final List parents = (List)myParents.get(description); - if (myCurrentTest != null && (parents == null || parents.isEmpty() || !((List)parents.get(0)).contains(myCurrentTest))) { + List> parents = myParents.get(description); + if (myCurrentTest != null && (parents == null || parents.isEmpty() || !(parents.get(0)).contains(myCurrentTest))) { if (!myWaitingQueue.containsKey(description)) { myWaitingQueue.put(description, new TestEvent()); return; @@ -109,13 +112,13 @@ private void testStarted(Description description, String methodName) { final String classFQN = JUnit4ReflectionUtil.getClassName(description); - - List parentsHierarchy = parents != null && !parents.isEmpty() ? (List)parents.remove(0) + List parentsHierarchy = parents != null && !parents.isEmpty() + ? parents.remove(0) : Collections.singletonList(Description.createSuiteDescription(classFQN, new Annotation[0])); if (methodName == null) { methodName = getFullMethodName(description, parentsHierarchy.isEmpty() ? null - : (Description)parentsHierarchy.get(parentsHierarchy.size() - 1)); + : parentsHierarchy.get(parentsHierarchy.size() - 1)); if (methodName == null) { return; } @@ -125,8 +128,8 @@ private void testStarted(Description description, String methodName) { Description currentClass; Description currentParent; while (idx < myStartedSuites.size() && idx < parentsHierarchy.size()) { - currentClass = (Description)myStartedSuites.get(idx); - currentParent = (Description)parentsHierarchy.get(parentsHierarchy.size() - 1 - idx); + currentClass = myStartedSuites.get(idx); + currentParent = parentsHierarchy.get(parentsHierarchy.size() - 1 - idx); if (isHierarchyDifferent(parents, currentClass, currentParent)) { break; } @@ -134,7 +137,7 @@ private void testStarted(Description description, String methodName) { } for (int i = myStartedSuites.size() - 1; i >= idx; i--) { - currentClass = (Description)myStartedSuites.remove(i); + currentClass = myStartedSuites.remove(i); myPrintStream.println( "\n##teamcity[testSuiteFinished name=\'" + escapeName(getShortName(JUnit4ReflectionUtil.getClassName(currentClass))) + "\']" @@ -142,9 +145,9 @@ private void testStarted(Description description, String methodName) { } for (int i = idx; i < parentsHierarchy.size(); i++) { - final Description descriptionFromHistory = (Description)parentsHierarchy.get(parentsHierarchy.size() - 1 - i); - final String fqName = JUnit4ReflectionUtil.getClassName(descriptionFromHistory); - final String className = getShortName(fqName); + Description descriptionFromHistory = parentsHierarchy.get(parentsHierarchy.size() - 1 - i); + String fqName = JUnit4ReflectionUtil.getClassName(descriptionFromHistory); + String className = getShortName(fqName); if (!className.equals(myRootName)) { myPrintStream.println( "\n##teamcity[testSuiteStarted name=\'" + escapeName(className) + "\'" + @@ -176,9 +179,10 @@ protected long currentTime() { return System.currentTimeMillis(); } + @Override public void testFinished(Description description) { if (startedInParallel(description)) { - TestEvent testEvent = (TestEvent)myWaitingQueue.get(description); + TestEvent testEvent = myWaitingQueue.get(description); testEvent.setFinished(true); return; } @@ -210,6 +214,7 @@ private void testFinishedNoDumping(final String methodName) { myCurrentTest = null; } + @Override public void testFailure(Failure failure) { testFailure(failure, failure.getDescription(), MapSerializerUtil.TEST_FAILED); } @@ -224,8 +229,7 @@ private void testFailure(Failure failure, Description description, String messag classConfigurationFinished(description); } if (myStartedSuites.isEmpty() || !description.equals(myStartedSuites.get(myStartedSuites.size() - 1))) { - for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext(); ) { - Description next = (Description)iterator.next(); + for (Description next : description.getChildren()) { testStarted(next); testFailure(isIgnored ? failure : null, next, MapSerializerUtil.TEST_IGNORED); testFinished(next); @@ -239,7 +243,7 @@ private void testFailure(Failure failure, Description description, String messag private void classConfigurationFinished(Description description) { if (startedInParallel(description)) { - TestEvent testEvent = (TestEvent)myWaitingQueue.get(description); + TestEvent testEvent = myWaitingQueue.get(description); testEvent.setFinished(true); return; } @@ -266,7 +270,7 @@ private void classConfigurationStarted(Description description) { private void testFailure(Failure failure, Description description, String messageName, String methodName) { final boolean isIgnored = MapSerializerUtil.TEST_IGNORED.equals(messageName); if (startedInParallel(description)) { - TestEvent testEvent = (TestEvent)myWaitingQueue.get(description); + TestEvent testEvent = myWaitingQueue.get(description); if (testEvent == null) { testEvent = new TestEvent(); myWaitingQueue.put(description, testEvent); @@ -276,7 +280,7 @@ private void testFailure(Failure failure, Description description, String messag return; } - final Map attrs = new LinkedHashMap(); + Map attrs = new LinkedHashMap<>(); attrs.put("name", methodName); final long duration = currentTime() - myCurrentTestStart; if (duration > 0) { @@ -305,6 +309,7 @@ protected String getTrace(Failure failure) { return failure.getTrace(); } + @Override public void testAssumptionFailure(Failure failure) { testFailure(failure, failure.getDescription(), MapSerializerUtil.TEST_IGNORED); } @@ -318,7 +323,7 @@ private String getFullMethodName(Description description, Description parent) { } private String getFullMethodName(Description description, Description parent, boolean acceptNull) { - String methodName = (String)myMethodNames.get(description); + String methodName = myMethodNames.get(description); if (methodName == null) { methodName = JUnit4ReflectionUtil.getMethodName(description); if (methodName != null && (parent == null || !isParameter(parent))) { @@ -335,11 +340,11 @@ private String getFullMethodName(Description description, Description parent, bo return methodName; } + @Override public void testIgnored(Description description) { final String methodName = getFullMethodName(description); if (methodName == null) { - for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext(); ) { - final Description testDescription = (Description)iterator.next(); + for (Description testDescription : description.getChildren()) { testIgnored(testDescription, getFullMethodName(testDescription)); } } @@ -350,9 +355,9 @@ public void testIgnored(Description description) { private void testIgnored(Description description, String methodName) { testStarted(description); - Map attrs = new HashMap(); + Map attrs = new HashMap<>(); try { - final Ignore ignoredAnnotation = (Ignore)description.getAnnotation(Ignore.class); + Ignore ignoredAnnotation = description.getAnnotation(Ignore.class); if (ignoredAnnotation != null) { final String val = ignoredAnnotation.value(); if (val != null) { @@ -366,7 +371,7 @@ private void testIgnored(Description description, String methodName) { attrs.put("name", methodName); if (startedInParallel(description)) { - TestEvent testEvent = (TestEvent)myWaitingQueue.get(description); + TestEvent testEvent = myWaitingQueue.get(description); if (testEvent == null) { testEvent = new TestEvent(); myWaitingQueue.put(description, testEvent); @@ -381,9 +386,9 @@ private void testIgnored(Description description, String methodName) { } private void dumpQueue(boolean acceptUnfinished) { - for (Iterator iterator = myWaitingQueue.keySet().iterator(); iterator.hasNext(); ) { - Description description = (Description)iterator.next(); - TestEvent testEvent = (TestEvent)myWaitingQueue.get(description); + for (Iterator iterator = myWaitingQueue.keySet().iterator(); iterator.hasNext(); ) { + Description description = iterator.next(); + TestEvent testEvent = myWaitingQueue.get(description); if (acceptUnfinished || testEvent.isFinished()) { testStarted(description, testEvent.getMethodName()); @@ -457,8 +462,8 @@ public String getMethodName() { } } - private void sendTree(Description description, Description parent, List currentParents) { - List pParents = new ArrayList(3); + private void sendTree(Description description, Description parent, List currentParents) { + List pParents = new ArrayList<>(3); pParents.addAll(currentParents); if (parent != null) { final String parentClassName = JUnit4ReflectionUtil.getClassName(parent); @@ -467,16 +472,16 @@ private void sendTree(Description description, Description parent, List currentP } } - List parents = (List)myParents.get(description); + List> parents = myParents.get(description); if (parents == null) { - parents = new ArrayList(1); + parents = new ArrayList<>(1); myParents.put(description, parents); } parents.add(pParents); String className = JUnit4ReflectionUtil.getClassName(description); if (description.isTest()) { - final String methodName = getFullMethodName((Description)description, parent, true); + String methodName = getFullMethodName(description, parent, true); if (methodName != null) { if (isWarning(methodName, className) && parent != null) { className = JUnit4ReflectionUtil.getClassName(parent); @@ -490,15 +495,13 @@ private void sendTree(Description description, Description parent, List currentP return; } - List tests = description.getChildren(); + List tests = description.getChildren(); boolean pass = false; - for (Iterator iterator = tests.iterator(); iterator.hasNext(); ) { - final Object next = iterator.next(); - final Description nextDescription = (Description)next; + for (Description nextDescription : tests) { if ((myRootName == null || !myRootName.equals(className)) && !pass) { pass = true; String locationHint = className; - if (isParameter((Description)description)) { + if (isParameter(description)) { final String displayName = nextDescription.getDisplayName(); final int paramIdx = displayName.indexOf(locationHint); if (paramIdx > -1) { @@ -538,7 +541,7 @@ private static boolean isParameter(Description description) { public void sendTree(Description description) { myRootName = JUnit4ReflectionUtil.getClassName(description); - sendTree(description, null, new ArrayList()); + sendTree(description, null, new ArrayList<>()); myPrintStream.println("##teamcity[treeEnded]"); } diff --git a/junit-rt/src/main/java/com/intellij/junit4/JUnit4TestRunnerUtil.java b/junit-rt/src/main/java/com/intellij/junit4/JUnit4TestRunnerUtil.java index 7b8db29..5e4034d 100644 --- a/junit-rt/src/main/java/com/intellij/junit4/JUnit4TestRunnerUtil.java +++ b/junit-rt/src/main/java/com/intellij/junit4/JUnit4TestRunnerUtil.java @@ -50,13 +50,12 @@ public static Request buildRequest(String[] suiteClassNames, final String name, if (suiteClassNames.length == 0) { return null; } - Vector result = new Vector(); - for (int i = 0; i < suiteClassNames.length; i++) { - String suiteClassName = suiteClassNames[i]; + Vector result = new Vector<>(); + for (String suiteClassName : suiteClassNames) { if (suiteClassName.charAt(0) == '@') { // all tests in the package specified try { - final Map classMethods = new HashMap(); + final Map> classMethods = new HashMap<>(); BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(suiteClassName.substring(1)), "UTF-8")); try { @@ -76,9 +75,9 @@ public static Request buildRequest(String[] suiteClassNames, final String name, final int idx = line.indexOf(','); if (idx != -1) { className = line.substring(0, idx); - Set methodNames = (Set)classMethods.get(className); + Set methodNames = classMethods.get(className); if (methodNames == null) { - methodNames = new HashSet(); + methodNames = new HashSet<>(); classMethods.put(className, methodNames); } methodNames.add(line.substring(idx + 1)); @@ -97,17 +96,15 @@ public static Request buildRequest(String[] suiteClassNames, final String name, Class.forName("org.junit.runner.Computer"); allClasses = JUnit46ClassesRequestBuilder.getClassesRequest(suiteName, classes, classMethods, category); } - catch (ClassNotFoundException e) { - allClasses = getClassRequestsUsing44API(suiteName, classes); - } - catch (NoSuchMethodError e) { + catch (ClassNotFoundException | NoSuchMethodError e) { allClasses = getClassRequestsUsing44API(suiteName, classes); } return classMethods.isEmpty() ? allClasses : allClasses.filterWith(new Filter() { + @Override public boolean shouldRun(Description description) { if (description.isTest()) { - final Set methods = (Set)classMethods.get(JUnit4ReflectionUtil.getClassName(description)); + Set methods = classMethods.get(JUnit4ReflectionUtil.getClassName(description)); if (methods == null) { return true; } @@ -122,7 +119,7 @@ public boolean shouldRun(Description description) { final Class testClass = description.getTestClass(); if (testClass != null) { - final RunWith classAnnotation = (RunWith)testClass.getAnnotation(RunWith.class); + final RunWith classAnnotation = (RunWith) testClass.getAnnotation(RunWith.class); if (classAnnotation != null && Parameterized.class.isAssignableFrom(classAnnotation.value())) { final int idx = methodName.indexOf("["); if (idx > -1) { @@ -135,6 +132,7 @@ public boolean shouldRun(Description description) { return true; } + @Override public String describe() { return "Tests"; } @@ -154,7 +152,7 @@ public String describe() { if (index != -1) { final Class clazz = loadTestClass(suiteClassName.substring(0, index)); final String methodName = suiteClassName.substring(index + 1); - final RunWith clazzAnnotation = (RunWith)clazz.getAnnotation(RunWith.class); + RunWith clazzAnnotation = (RunWith) clazz.getAnnotation(RunWith.class); final Description testMethodDescription = Description.createTestDescription(clazz, methodName); if (clazzAnnotation == null) { //do not override external runners try { @@ -165,10 +163,12 @@ public String describe() { JUnit45ClassesRequestBuilder.createIgnoreIgnoredClassRequest(clazz, true); final Filter ignoredTestFilter = Filter.matchMethodDescription(testMethodDescription); return classRequest.filterWith(new Filter() { + @Override public boolean shouldRun(Description description) { return ignoredTestFilter.shouldRun(description); } + @Override public String describe() { return "Ignored " + methodName; } @@ -202,6 +202,7 @@ public String describe() { return Request.method(clazz, methodName); } return Request.aClass(clazz).filterWith(new Filter() { + @Override public boolean shouldRun(Description description) { if (description.isTest() && description.getDisplayName().startsWith("warning(junit.framework.TestSuite$")) { @@ -211,6 +212,7 @@ public boolean shouldRun(Description description) { return methodFilter.shouldRun(description); } + @Override public String describe() { return methodFilter.describe(); } @@ -219,7 +221,7 @@ public String describe() { else if (name != null && suiteClassNames.length == 1) { final Class clazz = loadTestClass(suiteClassName); if (clazz != null) { - final RunWith clazzAnnotation = (RunWith)clazz.getAnnotation(RunWith.class); + RunWith clazzAnnotation = (RunWith) clazz.getAnnotation(RunWith.class); final Request request = getParameterizedRequest(name, null, clazz, clazzAnnotation); if (request != null) { return request; @@ -231,7 +233,7 @@ else if (name != null && suiteClassNames.length == 1) { } if (result.size() == 1) { - final Class clazz = (Class)result.get(0); + final Class clazz = result.get(0); try { if (clazz.getAnnotation(Ignore.class) != null) { //override ignored case only return JUnit45ClassesRequestBuilder.createIgnoreIgnoredClassRequest(clazz, false); @@ -267,6 +269,7 @@ private static Request getParameterizedRequest( Class.forName("org.junit.runners.BlockJUnit4ClassRunner"); //ignore for junit4.4 and < final Constructor runnerConstructor = runnerClass.getConstructor(new Class[]{Class.class}); return Request.runner((Runner)runnerConstructor.newInstance(clazz)).filterWith(new Filter() { + @Override public boolean shouldRun(Description description) { final String descriptionMethodName = description.getMethodName(); //filter by params @@ -283,6 +286,7 @@ public boolean shouldRun(Description description) { return true; } + @Override public String describe() { if (parameterString == null) { return methodName + " with any parameter"; @@ -313,7 +317,7 @@ private static Request getClassRequestsUsing44API(String suiteName, Class[] clas return allClasses; } - private static void appendTestClass(Vector result, String className) { + private static void appendTestClass(Vector result, String className) { final Class aClass = loadTestClass(className); if (!result.contains(aClass)) { //do not append classes twice: rerun failed tests from one test suite result.addElement(aClass); diff --git a/junit-rt/src/main/java/com/intellij/junit4/JUnitTestDiscoveryListener.java b/junit-rt/src/main/java/com/intellij/junit4/JUnitTestDiscoveryListener.java index 3f835c4..b0a6fca 100644 --- a/junit-rt/src/main/java/com/intellij/junit4/JUnitTestDiscoveryListener.java +++ b/junit-rt/src/main/java/com/intellij/junit4/JUnitTestDiscoveryListener.java @@ -19,10 +19,12 @@ import com.intellij.rt.execution.junit.IDEAJUnitListenerEx; public class JUnitTestDiscoveryListener extends TestDiscoveryListener implements IDEAJUnitListenerEx { + @Override public String getFrameworkId() { return "j"; } + @Override public void testFinished(String className, String methodName) { testFinished(className, methodName, true); } diff --git a/junit-rt/src/main/java/com/intellij/rt/execution/junit/DeafStream.java b/junit-rt/src/main/java/com/intellij/rt/execution/junit/DeafStream.java index 080fbe0..00f0194 100644 --- a/junit-rt/src/main/java/com/intellij/rt/execution/junit/DeafStream.java +++ b/junit-rt/src/main/java/com/intellij/rt/execution/junit/DeafStream.java @@ -23,6 +23,7 @@ public class DeafStream extends OutputStream { public static final DeafStream CURRENT = new DeafStream(); public static final PrintStream DEAF_PRINT_STREAM = new PrintStream(CURRENT); + @Override public void write(int b) throws IOException { } } diff --git a/junit-rt/src/main/java/com/intellij/rt/execution/junit/JUnitForkedSplitter.java b/junit-rt/src/main/java/com/intellij/rt/execution/junit/JUnitForkedSplitter.java index aa1b443..4b089c5 100644 --- a/junit-rt/src/main/java/com/intellij/rt/execution/junit/JUnitForkedSplitter.java +++ b/junit-rt/src/main/java/com/intellij/rt/execution/junit/JUnitForkedSplitter.java @@ -24,7 +24,7 @@ /** * @author anna - * @since 6.04.2011 + * @since 2011-04-06 */ public class JUnitForkedSplitter extends ForkedSplitter { private IdeaTestRunner myTestRunner; @@ -33,21 +33,24 @@ public JUnitForkedSplitter(String workingDirsPath, String forkMode, List newArgs super(workingDirsPath, forkMode, newArgs); } - + @Override protected String getStarterName() { return JUnitForkedStarter.class.getName(); } + @Override protected Object createRootDescription(String[] args, String configName) throws InstantiationException, IllegalAccessException, ClassNotFoundException { myTestRunner = (IdeaTestRunner)JUnitStarter.getAgentClass((String)myNewArgs.get(0)).newInstance(); return myTestRunner.getTestToStart(args, configName); } + @Override protected String getTestClassName(Object child) { return myTestRunner.getTestClassName(child); } + @Override protected List createChildArgs(Object child) { List newArgs = new ArrayList(); newArgs.add(myTestRunner.getStartDescription(child)); @@ -55,12 +58,8 @@ protected List createChildArgs(Object child) { return newArgs; } - protected List createPerModuleArgs( - String packageName, - String workingDir, - List classNames, - Object rootDescription - ) throws IOException { + @Override + protected List createPerModuleArgs(String packageName, String workingDir, List classNames, Object rootDescription) throws IOException { File tempFile = File.createTempFile("idea_junit", ".tmp"); tempFile.deleteOnExit(); JUnitStarter.printClassesList(classNames, packageName, "", "", tempFile); @@ -70,6 +69,7 @@ protected List createPerModuleArgs( return childArgs; } + @Override protected List getChildren(Object child) { return myTestRunner.getChildTests(child); } diff --git a/junit-rt/src/main/java/com/intellij/rt/execution/junit/MapSerializerUtil.java b/junit-rt/src/main/java/com/intellij/rt/execution/junit/MapSerializerUtil.java index 3d86ed4..b7c0622 100644 --- a/junit-rt/src/main/java/com/intellij/rt/execution/junit/MapSerializerUtil.java +++ b/junit-rt/src/main/java/com/intellij/rt/execution/junit/MapSerializerUtil.java @@ -43,6 +43,7 @@ public interface EscapeInfoProvider { } public static final EscapeInfoProvider STD_ESCAPER = new EscapeInfoProvider() { + @Override public char escape(final char c) { switch (c) { case '\n': return 'n'; @@ -59,6 +60,7 @@ public char escape(final char c) { } } + @Override public char escapeCharacter() { return '|'; } diff --git a/junit-rt/src/main/java/com/intellij/rt/execution/junit/RunOnce.java b/junit-rt/src/main/java/com/intellij/rt/execution/junit/RunOnce.java index 3874bc6..d36149d 100644 --- a/junit-rt/src/main/java/com/intellij/rt/execution/junit/RunOnce.java +++ b/junit-rt/src/main/java/com/intellij/rt/execution/junit/RunOnce.java @@ -22,24 +22,23 @@ import java.util.Hashtable; public class RunOnce extends TestResult { - private final Hashtable myPeformedTests = new Hashtable(); + private final Hashtable myPerformedTests = new Hashtable(); private static final String NOT_ALLOWED_IN_ID = ":"; + @Override protected void run(TestCase test) { if (test.getClass().getName().startsWith(TestSuite.class.getName())) { super.run(test); } else { String testKey = keyOf(test); - if (!myPeformedTests.containsKey(testKey)) { + if (!myPerformedTests.containsKey(testKey)) { super.run(test); - myPeformedTests.put(testKey, test); + myPerformedTests.put(testKey, test); } } } - - private static String keyOf(TestCase test) { return test.getClass().getName() + NOT_ALLOWED_IN_ID + test.getName() + NOT_ALLOWED_IN_ID + test.toString(); } diff --git a/plugin/src/main/java/com/intellij/execution/junit/JUnit3Framework.java b/plugin/src/main/java/com/intellij/execution/junit/JUnit3Framework.java index ac64fa4..6f48a91 100644 --- a/plugin/src/main/java/com/intellij/execution/junit/JUnit3Framework.java +++ b/plugin/src/main/java/com/intellij/execution/junit/JUnit3Framework.java @@ -35,7 +35,8 @@ @ExtensionImpl public class JUnit3Framework extends JavaTestFramework { - @Nonnull + @Nonnull + @Override public String getName() { return "JUnit3"; @@ -84,6 +85,7 @@ public Image getIcon() return AllIcons.RunConfigurations.Junit; } + @Override protected String getMarkerClassFQName() { return "junit.framework.TestCase"; @@ -97,11 +99,13 @@ public ExternalLibraryDescriptor getFrameworkLibraryDescriptor() } @Nullable + @Override public String getDefaultSuperClass() { return "junit.framework.TestCase"; } + @Override public boolean isTestClass(PsiClass clazz, boolean canBePotential) { if(JUnitUtil.isJUnit3TestClass(clazz)) @@ -186,17 +190,20 @@ else if(inClass.getBody() == null) return inClass; } + @Override public FileTemplateDescriptor getSetUpMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit3 SetUp Method.java"); } + @Override public FileTemplateDescriptor getTearDownMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit3 TearDown Method.java"); } @Nonnull + @Override public FileTemplateDescriptor getTestMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit3 Test Method.java"); diff --git a/plugin/src/main/java/com/intellij/execution/junit/JUnit4Framework.java b/plugin/src/main/java/com/intellij/execution/junit/JUnit4Framework.java index 816cde7..ab3facc 100644 --- a/plugin/src/main/java/com/intellij/execution/junit/JUnit4Framework.java +++ b/plugin/src/main/java/com/intellij/execution/junit/JUnit4Framework.java @@ -9,7 +9,6 @@ import com.intellij.java.language.psi.codeStyle.JavaCodeStyleManager; import com.intellij.java.language.testIntegration.JavaTestFramework; import consulo.annotation.component.ExtensionImpl; -import consulo.application.AllIcons; import consulo.application.ApplicationManager; import consulo.application.CommonBundle; import consulo.execution.configuration.ConfigurationType; @@ -17,6 +16,7 @@ import consulo.language.psi.PsiElement; import consulo.language.psi.PsiManager; import consulo.language.util.IncorrectOperationException; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.ex.awt.Messages; import consulo.ui.image.Image; @@ -27,6 +27,7 @@ public class JUnit4Framework extends JavaTestFramework { @Nonnull + @Override public String getName() { return "JUnit4"; @@ -36,10 +37,11 @@ public String getName() @Override public Image getIcon() { - return AllIcons.RunConfigurations.Junit; + return PlatformIconGroup.runconfigurationsJunit(); } - protected String getMarkerClassFQName() + @Override + protected String getMarkerClassFQName() { return JUnitUtil.TEST_ANNOTATION; } @@ -51,12 +53,14 @@ public ExternalLibraryDescriptor getFrameworkLibraryDescriptor() return JUnitExternalLibraryDescriptor.JUNIT4; } - @Nullable + @Nullable + @Override public String getDefaultSuperClass() { return null; } + @Override public boolean isTestClass(PsiClass clazz, boolean canBePotential) { if(canBePotential) @@ -169,17 +173,20 @@ public boolean isMyConfigurationType(ConfigurationType type) return type instanceof JUnitConfigurationType; } + @Override public FileTemplateDescriptor getSetUpMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit4 SetUp Method.java"); } + @Override public FileTemplateDescriptor getTearDownMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit4 TearDown Method.java"); } @Nonnull + @Override public FileTemplateDescriptor getTestMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit4 Test Method.java"); diff --git a/plugin/src/main/java/com/intellij/execution/junit/JUnit5Framework.java b/plugin/src/main/java/com/intellij/execution/junit/JUnit5Framework.java index fa5d239..f3200cb 100644 --- a/plugin/src/main/java/com/intellij/execution/junit/JUnit5Framework.java +++ b/plugin/src/main/java/com/intellij/execution/junit/JUnit5Framework.java @@ -11,16 +11,20 @@ import com.intellij.java.language.psi.PsiMethod; import com.intellij.java.language.psi.codeStyle.JavaCodeStyleManager; import com.intellij.java.language.testIntegration.JavaTestFramework; +import consulo.annotation.access.RequiredReadAction; +import consulo.annotation.access.RequiredWriteAction; import consulo.annotation.component.ExtensionImpl; -import consulo.application.AllIcons; -import consulo.application.ApplicationManager; -import consulo.application.CommonBundle; +import consulo.application.Application; import consulo.execution.configuration.ConfigurationType; import consulo.fileTemplate.FileTemplateDescriptor; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiManager; import consulo.language.util.IncorrectOperationException; +import consulo.platform.base.icon.PlatformIconGroup; +import consulo.platform.base.localize.CommonLocalize; +import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.awt.Messages; +import consulo.ui.ex.awt.UIUtil; import consulo.ui.image.Image; import jakarta.annotation.Nonnull; @@ -30,6 +34,7 @@ public class JUnit5Framework extends JavaTestFramework { @Nonnull + @Override public String getName() { return "JUnit5"; @@ -39,10 +44,11 @@ public String getName() @Override public Image getIcon() { - return AllIcons.RunConfigurations.Junit; + return PlatformIconGroup.runconfigurationsJunit(); } - protected String getMarkerClassFQName() + @Override + protected String getMarkerClassFQName() { return JUnitUtil.TEST5_ANNOTATION; } @@ -55,12 +61,15 @@ public ExternalLibraryDescriptor getFrameworkLibraryDescriptor() } @Nullable + @Override public String getDefaultSuperClass() { return null; } - public boolean isTestClass(PsiClass clazz, boolean canBePotential) + @Override + @RequiredReadAction + public boolean isTestClass(PsiClass clazz, boolean canBePotential) { if(canBePotential) { @@ -97,8 +106,10 @@ protected PsiMethod findTearDownMethod(@Nonnull PsiClass clazz) return null; } - @Override + @Override @Nullable + @RequiredUIAccess + @RequiredWriteAction protected PsiMethod findOrCreateSetUpMethod(PsiClass clazz) throws IncorrectOperationException { PsiMethod method = findSetUpMethod(clazz); @@ -118,11 +129,16 @@ protected PsiMethod findOrCreateSetUpMethod(PsiClass clazz) throws IncorrectOper { return existingMethod; } - int exit = ApplicationManager.getApplication().isUnitTestMode() ? Messages.OK : Messages.showOkCancelDialog("Method setUp already exist but is not annotated as @BeforeEach. Annotate?", - CommonBundle.getWarningTitle(), Messages.getWarningIcon()); + int exit = Application.get().isUnitTestMode() ? Messages.OK : + Messages.showOkCancelDialog( + "Method setUp already exist but is not annotated as @BeforeEach. Annotate?", + CommonLocalize.titleWarning().get(), + UIUtil.getWarningIcon() + ); if(exit == Messages.OK) { - new AddAnnotationFix(JUnitUtil.BEFORE_EACH_ANNOTATION_NAME, existingMethod).invoke(existingMethod.getProject(), null, existingMethod.getContainingFile()); + new AddAnnotationFix(JUnitUtil.BEFORE_EACH_ANNOTATION_NAME, existingMethod) + .invoke(existingMethod.getProject(), null, existingMethod.getContainingFile()); return existingMethod; } } @@ -171,17 +187,20 @@ public boolean acceptNestedClasses() return true; } + @Override public FileTemplateDescriptor getSetUpMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit5 SetUp Method.java"); } + @Override public FileTemplateDescriptor getTearDownMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit5 TearDown Method.java"); } - @Nonnull + @Nonnull + @Override public FileTemplateDescriptor getTestMethodFileTemplateDescriptor() { return new FileTemplateDescriptor("JUnit5 Test Method.java"); diff --git a/plugin/src/main/java/com/intellij/execution/junit/JUnitConfiguration.java b/plugin/src/main/java/com/intellij/execution/junit/JUnitConfiguration.java index b47713d..9d1d2ae 100644 --- a/plugin/src/main/java/com/intellij/execution/junit/JUnitConfiguration.java +++ b/plugin/src/main/java/com/intellij/execution/junit/JUnitConfiguration.java @@ -56,6 +56,8 @@ import org.jetbrains.annotations.NonNls; import jakarta.annotation.Nonnull; +import org.jspecify.annotations.Nullable; + import java.util.*; public class JUnitConfiguration extends JavaTestConfigurationBase @@ -371,7 +373,8 @@ public String getPackage() return !Comparing.strEqual(data.TEST_OBJECT, TEST_PACKAGE) ? null : data.getPackageName(); } - public void beClassConfiguration(final PsiClass testClass) + @Override + public void beClassConfiguration(final PsiClass testClass) { if(FORK_KLASS.equals(getForkMode())) { @@ -437,7 +440,8 @@ public void setCategory(String categoryName) } } - public void beMethodConfiguration(final Location methodLocation) + @Override + public void beMethodConfiguration(final Location methodLocation) { setForkMode(FORK_NONE); setModule(myData.setTestMethod(methodLocation)); @@ -601,7 +605,8 @@ public boolean collectOutputFromProcessHandler() return false; } - public void bePatternConfiguration(List classes, PsiMethod method) + @Override + public void bePatternConfiguration(List classes, PsiMethod method) { myData.TEST_OBJECT = TEST_PATTERN; final LinkedHashSet patterns = new LinkedHashSet<>(); @@ -689,7 +694,8 @@ public static class Data implements Cloneable private Map myEnvs = new LinkedHashMap<>(); private String myChangeList = "All"; - public boolean equals(final Object object) + @Override + public boolean equals(@Nullable Object object) { if(!(object instanceof Data)) { @@ -703,7 +709,8 @@ public boolean equals(final Object object) .equal(REPEAT_MODE, second.REPEAT_MODE) && REPEAT_COUNT == second.REPEAT_COUNT; } - public int hashCode() + @Override + public int hashCode() { return Comparing.hashcode(TEST_OBJECT) ^ Comparing.hashcode(getMainClassName()) ^ Comparing.hashcode(getPackageName()) ^ Comparing.hashcode(getMethodNameWithSignature()) ^ Comparing .hashcode(getWorkingDirectory()) ^ Comparing.hashcode(VM_PARAMETERS) ^ Comparing.hashcode(PARAMETERS) ^ Comparing.hashcode(myPattern) ^ Comparing.hashcode(FORK_MODE) ^ Comparing diff --git a/plugin/src/main/java/com/intellij/execution/junit/JUnitUtil.java b/plugin/src/main/java/com/intellij/execution/junit/JUnitUtil.java index 22acae1..71738b8 100644 --- a/plugin/src/main/java/com/intellij/execution/junit/JUnitUtil.java +++ b/plugin/src/main/java/com/intellij/execution/junit/JUnitUtil.java @@ -513,6 +513,7 @@ public TestMethodFilter(final PsiClass aClass) { this.framework = framework instanceof JavaTestFramework javaTestFramework ? javaTestFramework : null; } + @Override public boolean value(final PsiMethod method) { return framework != null ? framework.isTestMethod(method, myClass) : isTestMethod(MethodLocation.elementInClass(method, myClass)); } diff --git a/plugin/src/main/java/com/intellij/execution/junit/TestClassFilter.java b/plugin/src/main/java/com/intellij/execution/junit/TestClassFilter.java index 99bbb80..939300f 100644 --- a/plugin/src/main/java/com/intellij/execution/junit/TestClassFilter.java +++ b/plugin/src/main/java/com/intellij/execution/junit/TestClassFilter.java @@ -45,7 +45,7 @@ public class TestClassFilter implements ClassFilter.ClassFilterWithScope private final Project myProject; private final GlobalSearchScope myScope; - private TestClassFilter(@Nullable PsiClass base, final GlobalSearchScope scope) + private TestClassFilter(@Nullable PsiClass base, final GlobalSearchScope scope) { myBase = base; myProject = scope.getProject(); @@ -62,9 +62,10 @@ public Project getProject() return myProject; } - public boolean isAccepted(final PsiClass aClass) + @Override + public boolean isAccepted(final PsiClass aClass) { - return ReadAction.compute(() -> + return ReadAction.compute(() -> { if(aClass.getQualifiedName() != null && (myBase != null && aClass.isInheritor(myBase, true) && ConfigurationUtil.PUBLIC_INSTANTIATABLE_CLASS.test(aClass) || JUnitUtil.isTestClass (aClass))) @@ -157,7 +158,8 @@ public static Predicate getClassNamePredicate(String pattern) }; } - public GlobalSearchScope getScope() + @Override + public GlobalSearchScope getScope() { return myScope; } diff --git a/plugin/src/main/java/com/intellij/execution/junit2/configuration/JUnitConfigurable.java b/plugin/src/main/java/com/intellij/execution/junit2/configuration/JUnitConfigurable.java index 87a64f6..1b2a62d 100644 --- a/plugin/src/main/java/com/intellij/execution/junit2/configuration/JUnitConfigurable.java +++ b/plugin/src/main/java/com/intellij/execution/junit2/configuration/JUnitConfigurable.java @@ -145,15 +145,12 @@ public JUnitConfigurable(final Project project) { myJrePathEditor.setDefaultJreSelector(DefaultJreSelector.fromModuleDependencies(getModulesComponent(), false)); myCommonJavaParameters.setModuleContext(myModuleSelector.getModule()); myCommonJavaParameters.setHasModuleMacro(); - myModule.getComponent().addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - myCommonJavaParameters.setModuleContext(myModuleSelector.getModule()); - } - }); + myModule.getComponent().addActionListener(e -> myCommonJavaParameters.setModuleContext(myModuleSelector.getModule())); myBrowsers = new BrowseModuleValueActionListener[]{ new PackageChooserActionListener(project), new TestClassBrowser(project), new MethodBrowser(project) { + @Override protected Condition getFilter(PsiClass testClass) { return new JUnitUtil.TestMethodFilter(testClass); } @@ -287,11 +284,7 @@ public void actionPerformed(ActionEvent e) { mySingleModuleScope, myModuleWDScope }, null); - myWholeProjectScope.addChangeListener(new ChangeListener() { - public void stateChanged(final ChangeEvent e) { - onScopeChanged(); - } - }); + myWholeProjectScope.addChangeListener(e -> onScopeChanged()); UIUtil.setEnabled(myCommonJavaParameters.getProgramParametersComponent(), false, true); @@ -323,6 +316,7 @@ private static void addRadioButtonsListeners(final JRadioButton[] radioButtons, } } + @Override public void applyEditorTo(@Nonnull final JUnitConfiguration configuration) { configuration.setRepeatMode((String)myRepeatCb.getSelectedItem()); try { @@ -353,6 +347,7 @@ else if (myModuleWDScope.isSelected()) { configuration.setShortenCommandLine((ShortenCommandLine)myShortenClasspathModeCombo.getComponent().getSelectedItem()); } + @Override public void resetEditorFrom(@Nonnull final JUnitConfiguration configuration) { final int count = configuration.getRepeatCount(); myRepeatCountField.setText(String.valueOf(count)); @@ -657,6 +652,7 @@ private void setPackage(final PsiPackage aPackage) { } @Nonnull + @Override public JComponent createEditor() { return myWholePanel; } @@ -671,6 +667,7 @@ public PackageChooserActionListener(final Project project) { super(project); } + @Override protected String showDialog() { PackageChooser chooser = getProject().getInstance(PackageChooserFactory.class).create(); List packages = chooser.showAndSelect(); @@ -707,14 +704,17 @@ public TestClassBrowser(final Project project) { super(project, ExecutionBundle.message("choose.test.class.dialog.title")); } + @Override protected void onClassChoosen(final PsiClass psiClass) { setPackage(JUnitUtil.getContainingPackage(psiClass)); } + @Override protected PsiClass findClass(final String className) { return getModuleSelector().findClass(className); } + @Override protected ClassFilter.ClassFilterWithScope getFilter() throws NoFilterException { final ConfigurationModuleSelector moduleSelector = getModuleSelector(); final Module module = moduleSelector.getModule(); @@ -743,10 +743,12 @@ public CategoryBrowser(Project project) { super(project, "Category Interface"); } + @Override protected PsiClass findClass(final String className) { return myModuleSelector.findClass(className); } + @Override protected ClassFilter.ClassFilterWithScope getFilter() throws NoFilterException { final Module module = myModuleSelector.getModule(); final GlobalSearchScope scope; @@ -757,10 +759,12 @@ protected ClassFilter.ClassFilterWithScope getFilter() throws NoFilterException scope = GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module); } return new ClassFilter.ClassFilterWithScope() { + @Override public GlobalSearchScope getScope() { return scope; } + @Override public boolean isAccepted(final PsiClass aClass) { return true; }