Bug 521464: [JUnit 5] Re-running a test method shows its parameter types
in non-readable form

Change-Id: I848ed6fabb589f0cceaa199c4a248078167fcb95
diff --git a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/RerunAction.java b/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/RerunAction.java
index e048229..a50fb08 100644
--- a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/RerunAction.java
+++ b/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/RerunAction.java
@@ -21,6 +21,7 @@
 	private String fTestId;
 	private String fClassName;
 	private String fTestName;
+	private String fTestDisplayName;
 	private TestRunnerViewPart fTestRunner;
 	private String fUniqueId;
 	private String fLaunchMode;
@@ -32,23 +33,25 @@
 	 * @param testId the test id
 	 * @param className the class name containing the test
 	 * @param testName the method to run or <code>null</code>
+	 * @param testDisplayName the display name of the test to re-run or <code>null</code>
 	 * @param uniqueId the unique ID of the test to re-run or <code>null</code>
 	 * @param launchMode the launch mode
 	 */
 	public RerunAction(String actionName, TestRunnerViewPart runner, String testId, String className, String testName,
-			String uniqueId, String launchMode) {
+			String testDisplayName, String uniqueId, String launchMode) {
 		super(actionName);
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IJUnitHelpContextIds.RERUN_ACTION);
 		fTestRunner= runner;
 		fTestId= testId;
 		fClassName= className;
 		fTestName= testName;
+		fTestDisplayName= testDisplayName;
 		fUniqueId= uniqueId;
 		fLaunchMode= launchMode;
 	}
 
 	@Override
 	public void run() {
-		fTestRunner.rerunTest(fTestId, fClassName, fTestName, fUniqueId, fLaunchMode);
+		fTestRunner.rerunTest(fTestId, fClassName, fTestName, fTestDisplayName, fUniqueId, fLaunchMode);
 	}
 }
diff --git a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java b/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java
index 3c6ca16..c2fd084 100644
--- a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java
+++ b/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java
@@ -2157,7 +2157,7 @@
 			getDisplay().asyncExec(r);
 	}
 
-	public void rerunTest(String testId, String className, String testName, String uniqueId, String launchMode) {
+	public void rerunTest(String testId, String className, String testName, String testDisplayName, String uniqueId, String launchMode) {
 		if (lastLaunchIsKeptAlive()) {
 			fTestRunSession.rerunTest(testId, className, testName);
 			TestCaseElement testCaseElement= (TestCaseElement) fTestRunSession.getTestElement(testId);
@@ -2174,9 +2174,14 @@
 				ILaunchConfiguration launchConfiguration= launch.getLaunchConfiguration();
 				if (launchConfiguration != null) {
 					try {
-						String name= className;
-						if (testName != null)
-							name+= "."+testName; //$NON-NLS-1$
+						String name;
+						if (testDisplayName != null) {
+							name= testDisplayName;
+						} else {
+							name= className;
+							if (testName != null)
+								name+= "."+testName; //$NON-NLS-1$
+						}
 						String configName= Messages.format(JUnitMessages.TestRunnerViewPart_configName, name);
 						ILaunchConfigurationWorkingCopy tmp = launchConfiguration.copy(configName);
 						// fix for bug: 64838  junit view run single test does not use correct class [JUnit]
diff --git a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestViewer.java b/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestViewer.java
index e2c2916..fbc4bad 100644
--- a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestViewer.java
+++ b/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestViewer.java
@@ -304,10 +304,10 @@
 			testMethodName= testMethodName + "(" + paramTypesStr + ")"; //$NON-NLS-1$ //$NON-NLS-2$
 		}
 		if (fTestRunnerPart.lastLaunchIsKeptAlive()) {
-			manager.add(new RerunAction(JUnitMessages.RerunAction_label_rerun, fTestRunnerPart, testCaseElement.getId(), className, testMethodName, testCaseElement.getUniqueId(), ILaunchManager.RUN_MODE));
+			manager.add(new RerunAction(JUnitMessages.RerunAction_label_rerun, fTestRunnerPart, testCaseElement.getId(), className, testMethodName, testCaseElement.getDisplayName(), testCaseElement.getUniqueId(), ILaunchManager.RUN_MODE));
 		} else {
-			manager.add(new RerunAction(JUnitMessages.RerunAction_label_run, fTestRunnerPart, testCaseElement.getId(), className, testMethodName, testCaseElement.getUniqueId(), ILaunchManager.RUN_MODE));
-			manager.add(new RerunAction(JUnitMessages.RerunAction_label_debug, fTestRunnerPart, testCaseElement.getId(), className, testMethodName, testCaseElement.getUniqueId(), ILaunchManager.DEBUG_MODE));
+			manager.add(new RerunAction(JUnitMessages.RerunAction_label_run, fTestRunnerPart, testCaseElement.getId(), className, testMethodName, testCaseElement.getDisplayName(), testCaseElement.getUniqueId(), ILaunchManager.RUN_MODE));
+			manager.add(new RerunAction(JUnitMessages.RerunAction_label_debug, fTestRunnerPart, testCaseElement.getId(), className, testMethodName, testCaseElement.getDisplayName(), testCaseElement.getUniqueId(), ILaunchManager.DEBUG_MODE));
 		}
 	}
 
@@ -345,8 +345,8 @@
 			}
 		}
 		if (qualifiedName != null) {
-			manager.add(new RerunAction(JUnitMessages.RerunAction_label_run, fTestRunnerPart, testSuiteElement.getId(), qualifiedName, testMethodName, testSuiteElement.getUniqueId(), ILaunchManager.RUN_MODE));
-			manager.add(new RerunAction(JUnitMessages.RerunAction_label_debug, fTestRunnerPart, testSuiteElement.getId(), qualifiedName, testMethodName, testSuiteElement.getUniqueId(), ILaunchManager.DEBUG_MODE));
+			manager.add(new RerunAction(JUnitMessages.RerunAction_label_run, fTestRunnerPart, testSuiteElement.getId(), qualifiedName, testMethodName, testSuiteElement.getDisplayName(), testSuiteElement.getUniqueId(), ILaunchManager.RUN_MODE));
+			manager.add(new RerunAction(JUnitMessages.RerunAction_label_debug, fTestRunnerPart, testSuiteElement.getId(), qualifiedName, testMethodName, testSuiteElement.getDisplayName(), testSuiteElement.getUniqueId(), ILaunchManager.DEBUG_MODE));
 		}
 	}