View | Details | Raw Unified | Return to bug 219466 | Differences between
and this patch

Collapse All | Expand All

(-)a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/TestSorting.java (+99 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2014 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     Sandra Lions <sandra.lions-piron@oracle.com> - [JUnit] allow to sort by name and by execution time - https://bugs.eclipse.org/bugs/show_bug.cgi?id=219466
10
 *******************************************************************************/
11
package org.eclipse.jdt.junit.tests;
12
13
import java.util.ArrayList;
14
import java.util.Arrays;
15
import java.util.List;
16
17
import org.eclipse.jdt.junit.JUnitCore;
18
import org.eclipse.jdt.junit.TestRunListener;
19
20
import org.eclipse.swt.widgets.Table;
21
22
import org.eclipse.jface.viewers.TableViewer;
23
24
import org.eclipse.ui.IWorkbenchPage;
25
26
import org.eclipse.jdt.core.IType;
27
28
import org.eclipse.jdt.internal.junit.ui.JUnitPlugin;
29
import org.eclipse.jdt.internal.junit.ui.TestRunnerViewPart;
30
import org.eclipse.jdt.internal.junit.ui.TestRunnerViewPart.SortingCriteria;
31
32
public class TestSorting extends AbstractTestRunListenerTest {
33
34
	private String[] runSequenceTest(IType typeToLaunch) throws Exception {
35
		TestRunLog log= new TestRunLog();
36
		final TestRunListener testRunListener= new TestRunListeners.SequenceTest(log);
37
		JUnitCore.addTestRunListener(testRunListener);
38
		try {
39
			return launchJUnit(typeToLaunch, new TestRunLog());
40
		} finally {
41
			JUnitCore.removeTestRunListener(testRunListener);
42
		}
43
	}
44
45
	public void testSorting() throws Exception {
46
47
		IWorkbenchPage activePage= JUnitPlugin.getActivePage();
48
		TestRunnerViewPart testRunnerViewPart= (TestRunnerViewPart)activePage.showView(TestRunnerViewPart.NAME);
49
		testRunnerViewPart.setLayoutMode(TestRunnerViewPart.LAYOUT_FLAT); // TableViewer
50
51
		String source= "package pack;\n"
52
				+ "import junit.framework.TestCase;\n"
53
				+ "public class ATestCase extends TestCase {\n"
54
				+ "	private String fString;\n"
55
				+ "	public void testB_FirstTest() throws Exception {\n"
56
				+ "	    fString= \"first\";\n"
57
				+ "	    Thread.sleep(30);\n"
58
				+ "	}\n"
59
				+ "	public void testC_SecondTest() throws Exception {\n"
60
				+ "	    fString= \"second\";\n"
61
				+ "	    Thread.sleep(50);\n"
62
				+ "	}\n"
63
				+ "	public void testA_ThirdTest() throws Exception {\n"
64
				+ "	    fString= \"third\";\n"
65
				+ "	    Thread.sleep(40);\n"
66
				+ "	}\n"
67
				+ "}";
68
69
		IType aTestCase= createType(source, "pack", "ATestCase.java");
70
		runSequenceTest(aTestCase);
71
72
		Table table= ((TableViewer)testRunnerViewPart.getTestViewer().getActiveViewer()).getTable();
73
		assertEquals(3, table.getItemCount());
74
75
		List<String> testResults;
76
77
		testRunnerViewPart.setSortingCriteria(SortingCriteria.SORT_BY_NAME);
78
		testResults= new ArrayList<String>();
79
		for (int i= 0; i < table.getItems().length; i++) {
80
			String text= table.getItems()[i].getText();
81
			testResults.add(i, text.substring(0, text.indexOf("_")));
82
		}
83
		assertTrue(Arrays.deepEquals(new String[] { "testA", "testB", "testC" }, testResults.toArray()));
84
85
		testRunnerViewPart.setSortingCriteria(SortingCriteria.SORT_BY_EXECUTION_TIME);
86
		testResults= new ArrayList<String>();
87
		for (int i= 0; i < table.getItems().length; i++) {
88
			String text= table.getItems()[i].getText();
89
			testResults.add(i, text.substring(text.indexOf("(") + 1, text.length()));
90
		}
91
		String previousResult= null;
92
		for (String testResult : testResults) {
93
			if (previousResult != null) {
94
				assertTrue(previousResult.compareTo(testResult) <= 0);
95
			}
96
			previousResult= testResult;
97
		}
98
	}
99
}
(-)a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitMessages.java (+6 lines)
Lines 9-14 Link Here
9
 *     IBM Corporation - initial API and implementation
9
 *     IBM Corporation - initial API and implementation
10
 *     David Saff (saff@mit.edu) - bug 102632: [JUnit] Support for JUnit 4.
10
 *     David Saff (saff@mit.edu) - bug 102632: [JUnit] Support for JUnit 4.
11
 *     Robert Konigsberg <konigsberg@google.com> - [JUnit] Improve discoverability of the ability to run a single method under JUnit Tests - https://bugs.eclipse.org/bugs/show_bug.cgi?id=285637
11
 *     Robert Konigsberg <konigsberg@google.com> - [JUnit] Improve discoverability of the ability to run a single method under JUnit Tests - https://bugs.eclipse.org/bugs/show_bug.cgi?id=285637
12
 *     Sandra Lions <sandra.lions-piron@oracle.com> - [JUnit] allow to sort by name and by execution time - https://bugs.eclipse.org/bugs/show_bug.cgi?id=219466
12
 *******************************************************************************/
13
 *******************************************************************************/
13
package org.eclipse.jdt.internal.junit.ui;
14
package org.eclipse.jdt.internal.junit.ui;
14
15
Lines 297-302 public final class JUnitMessages extends NLS { Link Here
297
	public static String TestRunnerViewPart_show_failures_only;
298
	public static String TestRunnerViewPart_show_failures_only;
298
	public static String TestRunnerViewPart_hierarchical_layout;
299
	public static String TestRunnerViewPart_hierarchical_layout;
299
300
301
	public static String TestRunnerViewPart_sort_by_menu;
302
	public static String TestRunnerViewPart_toggle_name_label;
303
	public static String TestRunnerViewPart_toggle_execution_order_label;
304
	public static String TestRunnerViewPart_toggle_execution_time_label;
305
300
	public static String TestSessionLabelProvider_testName_elapsedTimeInSeconds;
306
	public static String TestSessionLabelProvider_testName_elapsedTimeInSeconds;
301
307
302
	public static String TestSessionLabelProvider_testName_JUnitVersion;
308
	public static String TestSessionLabelProvider_testName_JUnitVersion;
(-)a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/JUnitMessages.properties (+5 lines)
Lines 8-13 Link Here
8
# Contributors:
8
# Contributors:
9
#     IBM Corporation - initial API and implementation
9
#     IBM Corporation - initial API and implementation
10
#     Robert Konigsberg <konigsberg@google.com> - [JUnit] Improve discoverability of the ability to run a single method under JUnit Tests - https://bugs.eclipse.org/bugs/show_bug.cgi?id=285637
10
#     Robert Konigsberg <konigsberg@google.com> - [JUnit] Improve discoverability of the ability to run a single method under JUnit Tests - https://bugs.eclipse.org/bugs/show_bug.cgi?id=285637
11
#     Sandra Lions <sandra.lions-piron@oracle.com> - [JUnit] allow to sort by name and by execution time - https://bugs.eclipse.org/bugs/show_bug.cgi?id=219466
11
###############################################################################
12
###############################################################################
12
CopyTrace_action_label=Copy Trace
13
CopyTrace_action_label=Copy Trace
13
CopyTraceAction_problem=Problem Copying to Clipboard
14
CopyTraceAction_problem=Problem Copying to Clipboard
Lines 75-80 TestRunnerViewPart_select_test_run=&Select a test run: Link Here
75
TestRunnerViewPart_stopaction_tooltip=Stop JUnit Test Run
76
TestRunnerViewPart_stopaction_tooltip=Stop JUnit Test Run
76
TestRunnerViewPart_show_execution_time=Show Execution &Time
77
TestRunnerViewPart_show_execution_time=Show Execution &Time
77
TestRunnerViewPart_show_failures_only=Show &Failures Only
78
TestRunnerViewPart_show_failures_only=Show &Failures Only
79
TestRunnerViewPart_sort_by_menu=Sort By
80
TestRunnerViewPart_toggle_name_label=Name
81
TestRunnerViewPart_toggle_execution_order_label=Execution Order
82
TestRunnerViewPart_toggle_execution_time_label=Execution Time
78
TestRunnerViewPart_rerunaction_label=Rerun Test
83
TestRunnerViewPart_rerunaction_label=Rerun Test
79
TestRunnerViewPart_rerunaction_tooltip=Rerun Test
84
TestRunnerViewPart_rerunaction_tooltip=Rerun Test
80
TestRunnerViewPart_hierarchical_layout=Show Tests in &Hierarchy 
85
TestRunnerViewPart_hierarchical_layout=Show Tests in &Hierarchy 
(-)a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestRunnerViewPart.java (-3 / +93 lines)
Lines 16-21 Link Here
16
 *     Andrew Eisenberg <andrew@eisenberg.as> - [JUnit] Rerun failed first does not work with JUnit4 - https://bugs.eclipse.org/bugs/show_bug.cgi?id=140392
16
 *     Andrew Eisenberg <andrew@eisenberg.as> - [JUnit] Rerun failed first does not work with JUnit4 - https://bugs.eclipse.org/bugs/show_bug.cgi?id=140392
17
 *     Thirumala Reddy Mutchukota <thirumala@google.com> - [JUnit] Avoid rerun test launch on UI thread - https://bugs.eclipse.org/bugs/show_bug.cgi?id=411841
17
 *     Thirumala Reddy Mutchukota <thirumala@google.com> - [JUnit] Avoid rerun test launch on UI thread - https://bugs.eclipse.org/bugs/show_bug.cgi?id=411841
18
 *     Andrew Eisenberg <andrew@eisenberg.as> - [JUnit] Add a monospace font option for the junit results view - https://bugs.eclipse.org/bugs/show_bug.cgi?id=411794
18
 *     Andrew Eisenberg <andrew@eisenberg.as> - [JUnit] Add a monospace font option for the junit results view - https://bugs.eclipse.org/bugs/show_bug.cgi?id=411794
19
 *     Sandra Lions <sandra.lions-piron@oracle.com> - [JUnit] allow to sort by name and by execution time - https://bugs.eclipse.org/bugs/show_bug.cgi?id=219466
19
 *******************************************************************************/
20
 *******************************************************************************/
20
package org.eclipse.jdt.internal.junit.ui;
21
package org.eclipse.jdt.internal.junit.ui;
21
22
Lines 163-170 public class TestRunnerViewPart extends ViewPart { Link Here
163
164
164
	static final int REFRESH_INTERVAL= 200;
165
	static final int REFRESH_INTERVAL= 200;
165
166
166
	static final int LAYOUT_FLAT= 0;
167
	public static final int LAYOUT_FLAT= 0;
167
	static final int LAYOUT_HIERARCHICAL= 1;
168
	public static final int LAYOUT_HIERARCHICAL= 1;
168
169
169
	/**
170
	/**
170
	 * Whether the output scrolls and reveals tests as they are executed.
171
	 * Whether the output scrolls and reveals tests as they are executed.
Lines 203-208 public class TestRunnerViewPart extends ViewPart { Link Here
203
	 */
204
	 */
204
	private boolean fIsDisposed= false;
205
	private boolean fIsDisposed= false;
205
206
207
	public enum SortingCriteria {
208
		SORT_BY_NAME, SORT_BY_EXECUTION_ORDER, SORT_BY_EXECUTION_TIME
209
	}
210
	/**
211
	 * The current sorting criteria.
212
	 */
213
	private SortingCriteria fSortingCriteria= SortingCriteria.SORT_BY_EXECUTION_ORDER;
214
206
	/**
215
	/**
207
	 * Actions
216
	 * Actions
208
	 */
217
	 */
Lines 225-230 public class TestRunnerViewPart extends ViewPart { Link Here
225
	private ShowTimeAction fShowTimeAction;
234
	private ShowTimeAction fShowTimeAction;
226
	private ActivateOnErrorAction fActivateOnErrorAction;
235
	private ActivateOnErrorAction fActivateOnErrorAction;
227
	private IMenuListener fViewMenuListener;
236
	private IMenuListener fViewMenuListener;
237
	
238
	private ToggleSortingAction[] fToggleSortingActions;
228
239
229
	private TestRunSession fTestRunSession;
240
	private TestRunSession fTestRunSession;
230
	private TestSessionListener fTestSessionListener;
241
	private TestSessionListener fTestSessionListener;
Lines 279-284 public class TestRunnerViewPart extends ViewPart { Link Here
279
	 */
290
	 */
280
	static final String TAG_SHOW_TIME= "time"; //$NON-NLS-1$
291
	static final String TAG_SHOW_TIME= "time"; //$NON-NLS-1$
281
292
293
	static final String TAG_SORTING_CRITERIA= "SortingCriteria"; //$NON-NLS-1$
294
282
	/**
295
	/**
283
	 * @since 3.5
296
	 * @since 3.5
284
	 */
297
	 */
Lines 706-711 public class TestRunnerViewPart extends ViewPart { Link Here
706
719
707
			fStopAction.setEnabled(true);
720
			fStopAction.setEnabled(true);
708
			fRerunLastTestAction.setEnabled(true);
721
			fRerunLastTestAction.setEnabled(true);
722
			
723
			for (ToggleSortingAction tsa : fToggleSortingActions) {
724
				tsa.setEnabled(false);
725
			}
709
		}
726
		}
710
727
711
		public void sessionEnded(long elapsedTime){
728
		public void sessionEnded(long elapsedTime){
Lines 735-740 public class TestRunnerViewPart extends ViewPart { Link Here
735
				}
752
				}
736
			});
753
			});
737
			stopUpdateJobs();
754
			stopUpdateJobs();
755
			
756
			for (ToggleSortingAction tsa : fToggleSortingActions) {
757
				tsa.setEnabled(true);
758
			}
738
		}
759
		}
739
760
740
		public void sessionStopped(final long elapsedTime) {
761
		public void sessionStopped(final long elapsedTime) {
Lines 744-749 public class TestRunnerViewPart extends ViewPart { Link Here
744
765
745
			registerInfoMessage(JUnitMessages.TestRunnerViewPart_message_stopped);
766
			registerInfoMessage(JUnitMessages.TestRunnerViewPart_message_stopped);
746
			handleStopped();
767
			handleStopped();
768
			
769
			for (ToggleSortingAction tsa : fToggleSortingActions) {
770
				tsa.setEnabled(true);
771
			}
747
		}
772
		}
748
773
749
		public void sessionTerminated() {
774
		public void sessionTerminated() {
Lines 961-966 public class TestRunnerViewPart extends ViewPart { Link Here
961
		}
986
		}
962
	}
987
	}
963
988
989
	private class ToggleSortingAction extends Action {
990
		private final SortingCriteria fActionSortingCriteria;
991
992
		public ToggleSortingAction(SortingCriteria sortingCriteria) {
993
			super("", AS_RADIO_BUTTON); //$NON-NLS-1$
994
			switch (sortingCriteria) {
995
				case SORT_BY_NAME:
996
					setText(JUnitMessages.TestRunnerViewPart_toggle_name_label);
997
					break;
998
				case SORT_BY_EXECUTION_ORDER:
999
					setText(JUnitMessages.TestRunnerViewPart_toggle_execution_order_label);
1000
					break;
1001
				case SORT_BY_EXECUTION_TIME:
1002
					setText(JUnitMessages.TestRunnerViewPart_toggle_execution_time_label);
1003
					break;
1004
				default:
1005
					break;
1006
			}
1007
			fActionSortingCriteria= sortingCriteria;
1008
		}
1009
1010
1011
		@Override
1012
		public void run() {
1013
			if (isChecked()) {
1014
				setSortingCriteria(fActionSortingCriteria);
1015
			}
1016
		}
1017
1018
		public SortingCriteria getActionSortingCriteria() {
1019
			return fActionSortingCriteria;
1020
		}
1021
	}
1022
1023
	public void setSortingCriteria(SortingCriteria sortingCriteria) {
1024
		fSortingCriteria= sortingCriteria;
1025
		fTestViewer.setSortingCriteria(sortingCriteria);
1026
		for (int i= 0; i < fToggleSortingActions.length; ++i) {
1027
			fToggleSortingActions[i].setChecked(sortingCriteria == fToggleSortingActions[i].getActionSortingCriteria());
1028
		}
1029
	}
1030
	
964
	/**
1031
	/**
965
	 * Listen for for modifications to Java elements
1032
	 * Listen for for modifications to Java elements
966
	 */
1033
	 */
Lines 1145-1150 public class TestRunnerViewPart extends ViewPart { Link Here
1145
		memento.putString(TAG_FAILURES_ONLY, fFailuresOnlyFilterAction.isChecked() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
1212
		memento.putString(TAG_FAILURES_ONLY, fFailuresOnlyFilterAction.isChecked() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
1146
		memento.putInteger(TAG_LAYOUT, fLayout);
1213
		memento.putInteger(TAG_LAYOUT, fLayout);
1147
		memento.putString(TAG_SHOW_TIME, fShowTimeAction.isChecked() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
1214
		memento.putString(TAG_SHOW_TIME, fShowTimeAction.isChecked() ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
1215
		memento.putString(TAG_SORTING_CRITERIA, fSortingCriteria.name());
1148
	}
1216
	}
1149
1217
1150
	private void restoreLayoutState(IMemento memento) {
1218
	private void restoreLayoutState(IMemento memento) {
Lines 1183-1188 public class TestRunnerViewPart extends ViewPart { Link Here
1183
		boolean showTime= true;
1251
		boolean showTime= true;
1184
		if (time != null)
1252
		if (time != null)
1185
			showTime= time.equals("true"); //$NON-NLS-1$
1253
			showTime= time.equals("true"); //$NON-NLS-1$
1254
		
1255
		SortingCriteria sortingCriteria= SortingCriteria.SORT_BY_EXECUTION_ORDER;
1256
		String tagSortingCriteria= memento.getString(TAG_SORTING_CRITERIA);
1257
		if (tagSortingCriteria != null) {
1258
			sortingCriteria= Enum.valueOf(SortingCriteria.class, tagSortingCriteria);
1259
		}
1260
		setSortingCriteria(sortingCriteria);
1186
1261
1187
		setFilterAndLayout(showFailuresOnly, layoutValue);
1262
		setFilterAndLayout(showFailuresOnly, layoutValue);
1188
		setShowExecutionTime(showTime);
1263
		setShowExecutionTime(showTime);
Lines 1943-1948 action enablement Link Here
1943
		viewMenu.add(fShowTimeAction);
2018
		viewMenu.add(fShowTimeAction);
1944
		viewMenu.add(new Separator());
2019
		viewMenu.add(new Separator());
1945
2020
2021
		fToggleSortingActions=
2022
				new ToggleSortingAction[] {
2023
						new ToggleSortingAction(SortingCriteria.SORT_BY_NAME),
2024
						new ToggleSortingAction(SortingCriteria.SORT_BY_EXECUTION_TIME),
2025
						new ToggleSortingAction(SortingCriteria.SORT_BY_EXECUTION_ORDER) };
2026
		MenuManager sortBySubMenu= new MenuManager(JUnitMessages.TestRunnerViewPart_sort_by_menu);
2027
		for (int i= 0; i < fToggleSortingActions.length; ++i) {
2028
			sortBySubMenu.add(fToggleSortingActions[i]);
2029
		}
2030
		viewMenu.add(sortBySubMenu);
2031
		viewMenu.add(new Separator());
2032
1946
		MenuManager layoutSubMenu= new MenuManager(JUnitMessages.TestRunnerViewPart_layout_menu);
2033
		MenuManager layoutSubMenu= new MenuManager(JUnitMessages.TestRunnerViewPart_layout_menu);
1947
		for (int i = 0; i < fToggleOrientationActions.length; ++i) {
2034
		for (int i = 0; i < fToggleOrientationActions.length; ++i) {
1948
			layoutSubMenu.add(fToggleOrientationActions[i]);
2035
			layoutSubMenu.add(fToggleOrientationActions[i]);
Lines 2174-2185 action enablement Link Here
2174
		return fFailureTrace;
2261
		return fFailureTrace;
2175
	}
2262
	}
2176
2263
2264
	public TestViewer getTestViewer() {
2265
		return fTestViewer;
2266
	}
2177
2267
2178
	void setShowFailuresOnly(boolean failuresOnly) {
2268
	void setShowFailuresOnly(boolean failuresOnly) {
2179
		setFilterAndLayout(failuresOnly, fLayout);
2269
		setFilterAndLayout(failuresOnly, fLayout);
2180
	}
2270
	}
2181
2271
2182
	private void setLayoutMode(int mode) {
2272
	public void setLayoutMode(int mode) {
2183
		setFilterAndLayout(fFailuresOnlyFilterAction.isChecked(), mode);
2273
		setFilterAndLayout(fFailuresOnlyFilterAction.isChecked(), mode);
2184
	}
2274
	}
2185
2275
(-)a/org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/ui/TestViewer.java (-2 / +42 lines)
Lines 10-16 Link Here
10
 *     Brock Janiczak (brockj@tpg.com.au)
10
 *     Brock Janiczak (brockj@tpg.com.au)
11
 *         - https://bugs.eclipse.org/bugs/show_bug.cgi?id=102236: [JUnit] display execution time next to each test
11
 *         - https://bugs.eclipse.org/bugs/show_bug.cgi?id=102236: [JUnit] display execution time next to each test
12
 *     Xavier Coulon <xcoulon@redhat.com> - https://bugs.eclipse.org/bugs/show_bug.cgi?id=102512 - [JUnit] test method name cut off before (
12
 *     Xavier Coulon <xcoulon@redhat.com> - https://bugs.eclipse.org/bugs/show_bug.cgi?id=102512 - [JUnit] test method name cut off before (
13
13
 *     Sandra Lions <sandra.lions-piron@oracle.com> - [JUnit] allow to sort by name and by execution time - https://bugs.eclipse.org/bugs/show_bug.cgi?id=219466
14
 *******************************************************************************/
14
 *******************************************************************************/
15
15
16
package org.eclipse.jdt.internal.junit.ui;
16
package org.eclipse.jdt.internal.junit.ui;
Lines 48-53 import org.eclipse.jface.viewers.StructuredViewer; Link Here
48
import org.eclipse.jface.viewers.TableViewer;
48
import org.eclipse.jface.viewers.TableViewer;
49
import org.eclipse.jface.viewers.TreeViewer;
49
import org.eclipse.jface.viewers.TreeViewer;
50
import org.eclipse.jface.viewers.Viewer;
50
import org.eclipse.jface.viewers.Viewer;
51
import org.eclipse.jface.viewers.ViewerComparator;
51
import org.eclipse.jface.viewers.ViewerFilter;
52
import org.eclipse.jface.viewers.ViewerFilter;
52
53
53
import org.eclipse.ui.IWorkbenchActionConstants;
54
import org.eclipse.ui.IWorkbenchActionConstants;
Lines 65-70 import org.eclipse.jdt.internal.junit.model.TestElement.Status; Link Here
65
import org.eclipse.jdt.internal.junit.model.TestRoot;
66
import org.eclipse.jdt.internal.junit.model.TestRoot;
66
import org.eclipse.jdt.internal.junit.model.TestRunSession;
67
import org.eclipse.jdt.internal.junit.model.TestRunSession;
67
import org.eclipse.jdt.internal.junit.model.TestSuiteElement;
68
import org.eclipse.jdt.internal.junit.model.TestSuiteElement;
69
import org.eclipse.jdt.internal.junit.ui.TestRunnerViewPart.SortingCriteria;
68
70
69
import org.eclipse.jdt.internal.ui.viewsupport.ColoringLabelProvider;
71
import org.eclipse.jdt.internal.ui.viewsupport.ColoringLabelProvider;
70
import org.eclipse.jdt.internal.ui.viewsupport.SelectionProviderMediator;
72
import org.eclipse.jdt.internal.ui.viewsupport.SelectionProviderMediator;
Lines 324-329 public class TestViewer { Link Here
324
		}
326
		}
325
	}
327
	}
326
328
329
	public synchronized void setSortingCriteria(SortingCriteria sortingCriteria) {
330
		ViewerComparator viewComparator;
331
		switch (sortingCriteria) {
332
			case SORT_BY_EXECUTION_ORDER:
333
				viewComparator= null;
334
				break;
335
			case SORT_BY_EXECUTION_TIME:
336
				viewComparator= new TestExecutionTimeComparator();
337
				break;
338
			case SORT_BY_NAME:
339
				viewComparator= new TestNameComparator();
340
				break;
341
			default:
342
				viewComparator= null;
343
				break;
344
		}
345
		fTableViewer.setComparator(viewComparator);
346
		fTreeViewer.setComparator(viewComparator);
347
	}
348
349
	private static class TestNameComparator extends ViewerComparator {
350
		@Override
351
		public int compare(Viewer viewer, Object e1, Object e2) {
352
			TestElement tce1= (TestElement)e1;
353
			TestElement tce2= (TestElement)e2;
354
			return tce1.getTestName().compareTo(tce2.getTestName());
355
		}
356
	}
357
358
	private static class TestExecutionTimeComparator extends ViewerComparator {
359
		@Override
360
		public int compare(Viewer viewer, Object e1, Object e2) {
361
			TestElement tce1= (TestElement)e1;
362
			TestElement tce2= (TestElement)e2;
363
			return Double.compare(tce1.getElapsedTimeInSeconds(), tce2.getElapsedTimeInSeconds());
364
		}
365
	}
366
327
	public synchronized void setShowFailuresOnly(boolean failuresOnly, int layoutMode) {
367
	public synchronized void setShowFailuresOnly(boolean failuresOnly, int layoutMode) {
328
		/*
368
		/*
329
		 * Management of fTreeViewer and fTableViewer
369
		 * Management of fTreeViewer and fTableViewer
Lines 399-405 public class TestViewer { Link Here
399
			fTableHasFilter= filter;
439
			fTableHasFilter= filter;
400
	}
440
	}
401
441
402
	private StructuredViewer getActiveViewer() {
442
	public StructuredViewer getActiveViewer() {
403
		if (fLayoutMode == TestRunnerViewPart.LAYOUT_HIERARCHICAL)
443
		if (fLayoutMode == TestRunnerViewPart.LAYOUT_HIERARCHICAL)
404
			return fTreeViewer;
444
			return fTreeViewer;
405
		else
445
		else
(-)a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/junit/tests/JUnitJUnitTests.java (+4 lines)
Lines 7-12 Link Here
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
9
 *     IBM Corporation - initial API and implementation
10
 *     Sandra Lions <sandra.lions-piron@oracle.com> - [JUnit] allow to sort by name and by execution time - https://bugs.eclipse.org/bugs/show_bug.cgi?id=219466
10
 *******************************************************************************/
11
 *******************************************************************************/
11
12
12
package org.eclipse.jdt.junit.tests;
13
package org.eclipse.jdt.junit.tests;
Lines 37-42 public class JUnitJUnitTests { Link Here
37
38
38
		suite.addTestSuite(JUnit3TestFinderTest.class);
39
		suite.addTestSuite(JUnit3TestFinderTest.class);
39
		suite.addTestSuite(JUnit4TestFinderTest.class);
40
		suite.addTestSuite(JUnit4TestFinderTest.class);
41
		
42
		suite.addTestSuite(TestSorting.class);
43
40
		//$JUnit-END$
44
		//$JUnit-END$
41
		return suite;
45
		return suite;
42
	}
46
	}

Return to bug 219466