From 6e6dc3dcd24c7342a3d23f52254a861528bec73b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 2 Jul 2015 14:55:02 +0300 Subject: [PATCH] junit: hide fully qualified name from parameterized test children --- .../JUnitTreeByDescriptionHierarchyTest.java | 63 ++++++++++--------- .../intellij/junit4/JUnit4TestListener.java | 25 +++++--- 2 files changed, 50 insertions(+), 38 deletions(-) diff --git a/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java b/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java index e482faf81b42..1e49dcfbcdd8 100644 --- a/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java +++ b/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java @@ -48,18 +48,18 @@ public class JUnitTreeByDescriptionHierarchyTest { doTest(root, tests, "##teamcity[suiteTreeStarted name='TestA' locationHint='java:suite://a.TestA']\n" + "##teamcity[suiteTreeStarted name='|[0|]' locationHint='java:suite://a.TestA.|[0|]']\n" + - "##teamcity[suiteTreeNode name='TestA.testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + + "##teamcity[suiteTreeNode name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "##teamcity[suiteTreeEnded name='|[0|]']\n" + "##teamcity[suiteTreeStarted name='|[1|]' locationHint='java:suite://a.TestA.|[1|]']\n" + - "##teamcity[suiteTreeNode name='TestA.testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + + "##teamcity[suiteTreeNode name='testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + "##teamcity[suiteTreeEnded name='|[1|]']\n" + "##teamcity[suiteTreeEnded name='TestA']\n" + "##teamcity[suiteTreeStarted name='TestB' locationHint='java:suite://a.TestB']\n" + "##teamcity[suiteTreeStarted name='|[0|]' locationHint='java:suite://a.TestB.|[0|]']\n" + - "##teamcity[suiteTreeNode name='TestB.testName|[0|]' locationHint='java:test://a.TestB.testName|[0|]']\n" + + "##teamcity[suiteTreeNode name='testName|[0|]' locationHint='java:test://a.TestB.testName|[0|]']\n" + "##teamcity[suiteTreeEnded name='|[0|]']\n" + "##teamcity[suiteTreeStarted name='|[1|]' locationHint='java:suite://a.TestB.|[1|]']\n" + - "##teamcity[suiteTreeNode name='TestB.testName|[1|]' locationHint='java:test://a.TestB.testName|[1|]']\n" + + "##teamcity[suiteTreeNode name='testName|[1|]' locationHint='java:test://a.TestB.testName|[1|]']\n" + "##teamcity[suiteTreeEnded name='|[1|]']\n" + "##teamcity[suiteTreeEnded name='TestB']\n", @@ -68,26 +68,26 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + "##teamcity[testSuiteStarted name='TestA']\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + - "##teamcity[testStarted name='TestA.testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "\n" + - "##teamcity[testFinished name='TestA.testName|[0|]']\n" + + "##teamcity[testFinished name='testName|[0|]']\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + "##teamcity[testSuiteStarted name='|[1|]']\n" + - "##teamcity[testStarted name='TestA.testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + + "##teamcity[testStarted name='testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + "\n" + - "##teamcity[testFinished name='TestA.testName|[1|]']\n" + + "##teamcity[testFinished name='testName|[1|]']\n" + "##teamcity[testSuiteFinished name='|[1|]']\n" + "##teamcity[testSuiteFinished name='TestA']\n" + "##teamcity[testSuiteStarted name='TestB']\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + - "##teamcity[testStarted name='TestB.testName|[0|]' locationHint='java:test://a.TestB.testName|[0|]']\n" + + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestB.testName|[0|]']\n" + "\n" + - "##teamcity[testFinished name='TestB.testName|[0|]']\n" + + "##teamcity[testFinished name='testName|[0|]']\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + "##teamcity[testSuiteStarted name='|[1|]']\n" + - "##teamcity[testStarted name='TestB.testName|[1|]' locationHint='java:test://a.TestB.testName|[1|]']\n" + + "##teamcity[testStarted name='testName|[1|]' locationHint='java:test://a.TestB.testName|[1|]']\n" + "\n" + - "##teamcity[testFinished name='TestB.testName|[1|]']\n" + + "##teamcity[testFinished name='testName|[1|]']\n" + "##teamcity[testSuiteFinished name='|[1|]']\n" + "##teamcity[testSuiteFinished name='TestB']\n"); } @@ -120,7 +120,8 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[testStarted name='MyTest.testMe' locationHint='java:test://b.MyTest.testMe']\n" + "\n" + "##teamcity[testFinished name='MyTest.testMe']\n" + - "##teamcity[testSuiteFinished name='MyTest']\n"); + "##teamcity[testSuiteFinished nam" + + "e='MyTest']\n"); } @Test @@ -132,23 +133,23 @@ public class JUnitTreeByDescriptionHierarchyTest { doTest(aTestClassDescription, tests, //tree "##teamcity[suiteTreeStarted name='|[0|]' locationHint='java:suite://a.TestA.|[0|]']\n" + - "##teamcity[suiteTreeNode name='TestA.testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + + "##teamcity[suiteTreeNode name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "##teamcity[suiteTreeEnded name='|[0|]']\n" + "##teamcity[suiteTreeStarted name='|[1|]' locationHint='java:suite://a.TestA.|[1|]']\n" + - "##teamcity[suiteTreeNode name='TestA.testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + + "##teamcity[suiteTreeNode name='testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + "##teamcity[suiteTreeEnded name='|[1|]']\n", //start "##teamcity[enteredTheMatrix]\n" + "##teamcity[rootName name = 'TestA' comment = 'a' location = 'java:suite://a.TestA']\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + - "##teamcity[testStarted name='TestA.testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "\n" + - "##teamcity[testFinished name='TestA.testName|[0|]']\n" + + "##teamcity[testFinished name='testName|[0|]']\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + "##teamcity[testSuiteStarted name='|[1|]']\n" + - "##teamcity[testStarted name='TestA.testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + + "##teamcity[testStarted name='testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + "\n" + - "##teamcity[testFinished name='TestA.testName|[1|]']\n" + + "##teamcity[testFinished name='testName|[1|]']\n" + "##teamcity[testSuiteFinished name='|[1|]']\n"); } @@ -167,23 +168,23 @@ public class JUnitTreeByDescriptionHierarchyTest { doTest(aTestClassDescription, tests, //tree "##teamcity[suiteTreeStarted name='|[0|]' locationHint='java:suite://a.TestA.|[0|]']\n" + - "##teamcity[suiteTreeNode name='TestA.testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + + "##teamcity[suiteTreeNode name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "##teamcity[suiteTreeEnded name='|[0|]']\n" + "##teamcity[suiteTreeStarted name='|[0|]' locationHint='java:suite://a.TestA.|[0|]']\n" + - "##teamcity[suiteTreeNode name='TestA.testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + + "##teamcity[suiteTreeNode name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "##teamcity[suiteTreeEnded name='|[0|]']\n", //start "##teamcity[enteredTheMatrix]\n" + "##teamcity[rootName name = 'TestA' comment = 'a' location = 'java:suite://a.TestA']\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + - "##teamcity[testStarted name='TestA.testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "\n" + - "##teamcity[testFinished name='TestA.testName|[0|]']\n" + + "##teamcity[testFinished name='testName|[0|]']\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + - "##teamcity[testStarted name='TestA.testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "\n" + - "##teamcity[testFinished name='TestA.testName|[0|]']\n" + + "##teamcity[testFinished name='testName|[0|]']\n" + "##teamcity[testSuiteFinished name='|[0|]']\n"); } @@ -401,10 +402,10 @@ public class JUnitTreeByDescriptionHierarchyTest { doTest(root, tests, "##teamcity[suiteTreeStarted name='ATest' locationHint='java:suite://ATest']\n" + "##teamcity[suiteTreeStarted name='|[0|]' locationHint='java:suite://ATest.|[0|]']\n" + - "##teamcity[suiteTreeNode name='ATest.testName|[0|]' locationHint='java:test://ATest.testName|[0|]']\n" + + "##teamcity[suiteTreeNode name='testName|[0|]' locationHint='java:test://ATest.testName|[0|]']\n" + "##teamcity[suiteTreeEnded name='|[0|]']\n" + "##teamcity[suiteTreeStarted name='|[1|]' locationHint='java:suite://ATest.|[1|]']\n" + - "##teamcity[suiteTreeNode name='ATest.testName|[1|]' locationHint='java:test://ATest.testName|[1|]']\n" + + "##teamcity[suiteTreeNode name='testName|[1|]' locationHint='java:test://ATest.testName|[1|]']\n" + "##teamcity[suiteTreeEnded name='|[1|]']\n" + "##teamcity[suiteTreeEnded name='ATest']\n" + "##teamcity[suiteTreeStarted name='suite' locationHint='java:suite://suite']\n" + @@ -418,14 +419,14 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + "##teamcity[testSuiteStarted name='ATest']\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + - "##teamcity[testStarted name='ATest.testName|[0|]' locationHint='java:test://ATest.testName|[0|]']\n" + + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://ATest.testName|[0|]']\n" + "\n" + - "##teamcity[testFinished name='ATest.testName|[0|]']\n" + + "##teamcity[testFinished name='testName|[0|]']\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + "##teamcity[testSuiteStarted name='|[1|]']\n" + - "##teamcity[testStarted name='ATest.testName|[1|]' locationHint='java:test://ATest.testName|[1|]']\n" + + "##teamcity[testStarted name='testName|[1|]' locationHint='java:test://ATest.testName|[1|]']\n" + "\n" + - "##teamcity[testFinished name='ATest.testName|[1|]']\n" + + "##teamcity[testFinished name='testName|[1|]']\n" + "##teamcity[testSuiteFinished name='|[1|]']\n" + "##teamcity[testSuiteFinished name='ATest']\n" + "##teamcity[testSuiteStarted name='suite']\n" + diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java index 673f98b88b11..5beb81ee07db 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java @@ -43,6 +43,7 @@ public class JUnit4TestListener extends RunListener { 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; @@ -87,12 +88,14 @@ public class JUnit4TestListener extends RunListener { } public void testStarted(Description description) throws Exception { - final String methodName = getFullMethodName(description); - if (methodName == null) return; final String classFQN = JUnit4ReflectionUtil.getClassName(description); final List parents = (List)myParents.get(description); List parentsHierarchy = parents != null && !parents.isEmpty() ? (List)parents.remove(0) : Collections.singletonList(description); + + final String methodName = getFullMethodName(description, parentsHierarchy.isEmpty() ? null + : (Description)parentsHierarchy.get(parentsHierarchy.size() - 1)); + if (methodName == null) return; int idx = 0; Description currentClass; @@ -197,10 +200,18 @@ public class JUnit4TestListener extends RunListener { catch (Exception ignore) {} } - private static String getFullMethodName(Description description) { - final String methodName = JUnit4ReflectionUtil.getMethodName(description); - if (methodName != null) { - return getShortName(JUnit4ReflectionUtil.getClassName(description)) + "." + methodName; + private String getFullMethodName(Description description) { + return getFullMethodName(description, null); + } + + private String getFullMethodName(Description description, Description parent) { + String methodName = (String)myMethodNames.get(description); + if (methodName == null) { + methodName = JUnit4ReflectionUtil.getMethodName(description); + if (methodName != null && (parent == null || !isParameter(parent))) { + methodName = getShortName(JUnit4ReflectionUtil.getClassName(description)) + "." + methodName; + } + myMethodNames.put(description, methodName); } return methodName; } @@ -305,7 +316,7 @@ public class JUnit4TestListener extends RunListener { String className = JUnit4ReflectionUtil.getClassName(description); if (description.getChildren().isEmpty()) { - final String methodName = getFullMethodName((Description)description); + final String methodName = getFullMethodName((Description)description, parent); if (methodName != null) { if (parent != null) { List parents = (List)myParents.get(description);