Skip to content

Commit 8e47cc1

Browse files
committed
Migrate some tests to JUnit 5 using CloseTestWindowsExtension
Also migrate to PreferenceMementoExtension Migrated 10 tests in org.eclipse.ui.tests from using CloseTestWindowsRule (JUnit 4) to CloseTestWindowsExtension (JUnit 5). Updates include replacing imports, annotations (@rule -> @ExtendWith, @ignore -> @disabled, @before -> @beforeeach), and updating assertion argument order.
1 parent e42160b commit 8e47cc1

File tree

5 files changed

+108
-50
lines changed

5 files changed

+108
-50
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2025 Vector Informatik and others.
3+
*
4+
* This program and the accompanying materials
5+
* are made available under the terms of the Eclipse Public License 2.0
6+
* which accompanies this distribution, and is available at
7+
* https://www.eclipse.org/legal/epl-2.0/
8+
*
9+
* SPDX-License-Identifier: EPL-2.0
10+
*******************************************************************************/
11+
package org.eclipse.ui.tests.harness.util;
12+
13+
import org.eclipse.jface.preference.IPreferenceStore;
14+
import org.eclipse.jface.preference.PreferenceMemento;
15+
import org.junit.jupiter.api.extension.AfterEachCallback;
16+
import org.junit.jupiter.api.extension.BeforeEachCallback;
17+
import org.junit.jupiter.api.extension.ExtensionContext;
18+
19+
/**
20+
* Preference helper to restore changed preference values after test run.
21+
*/
22+
public class PreferenceMementoExtension implements BeforeEachCallback, AfterEachCallback {
23+
24+
private PreferenceMemento prefMemento;
25+
26+
@Override
27+
public void beforeEach(ExtensionContext context) {
28+
prefMemento = new PreferenceMemento();
29+
}
30+
31+
@Override
32+
public void afterEach(ExtensionContext context) {
33+
if (prefMemento != null) {
34+
prefMemento.resetPreferences();
35+
}
36+
}
37+
38+
/**
39+
* Change a preference value for the associated test run. The preference will
40+
* automatically be reset to the value it had before starting when executing
41+
* {@link #afterEach(ExtensionContext)}.
42+
*
43+
* @param <T> preference value type. The type must have a corresponding
44+
* {@link IPreferenceStore} setter.
45+
* @param store preference store to manipulate (must not be <code>null</code>)
46+
* @param name preference to change
47+
* @param value new preference value
48+
* @throws IllegalArgumentException when setting a type which is not supported
49+
* by {@link IPreferenceStore}
50+
*
51+
* @see IPreferenceStore#setValue(String, double)
52+
* @see IPreferenceStore#setValue(String, float)
53+
* @see IPreferenceStore#setValue(String, int)
54+
* @see IPreferenceStore#setValue(String, long)
55+
* @see IPreferenceStore#setValue(String, boolean)
56+
* @see IPreferenceStore#setValue(String, String)
57+
*/
58+
public <T> void setPreference(IPreferenceStore store, String name, T value) {
59+
if (prefMemento == null) {
60+
prefMemento = new PreferenceMemento();
61+
}
62+
prefMemento.setValue(store, name, value);
63+
}
64+
}

tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/Bug41931Test.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
package org.eclipse.ui.tests.internal;
1616

1717
import static org.eclipse.ui.tests.harness.util.UITestUtil.openTestWindow;
18-
import static org.junit.Assert.assertEquals;
18+
import static org.junit.jupiter.api.Assertions.assertEquals;
1919

2020
import java.io.ByteArrayInputStream;
2121
import java.io.InputStream;
@@ -30,22 +30,20 @@
3030
import org.eclipse.ui.IWorkbenchWindow;
3131
import org.eclipse.ui.ide.IDE;
3232
import org.eclipse.ui.internal.WorkbenchPage;
33-
import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
34-
import org.junit.Ignore;
35-
import org.junit.Rule;
36-
import org.junit.Test;
33+
import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension;
34+
import org.junit.jupiter.api.Disabled;
35+
import org.junit.jupiter.api.Test;
36+
import org.junit.jupiter.api.extension.ExtendWith;
3737

3838
/**
3939
* Test for Bug 41931.
4040
*
4141
* @since 3.0
4242
*/
43-
@Ignore
43+
@Disabled
44+
@ExtendWith(CloseTestWindowsExtension.class)
4445
public class Bug41931Test {
4546

46-
@Rule
47-
public CloseTestWindowsRule closeTestWindows = new CloseTestWindowsRule();
48-
4947
/**
5048
* Tests that the <code>bringToTop(IWorkbenchPart)</code> correctly
5149
* updates the activation list.
@@ -83,8 +81,8 @@ public void testBringToTop() throws CoreException {
8381
IEditorPart[] expectedResults = { editorA, editorB, editorC };
8482
IWorkbenchPartReference[] actualResults = page.getSortedParts();
8583
for (int i = 0; i < expectedResults.length; i++) {
86-
assertEquals(
87-
"Pre-test order is not correct.", expectedResults[i].getTitle(), actualResults[i].getPart(false).getTitle()); //$NON-NLS-1$
84+
assertEquals(expectedResults[i].getTitle(), actualResults[i].getPart(false).getTitle(),
85+
"Pre-test order is not correct."); //$NON-NLS-1$
8886
}
8987

9088
// Bring editor B to the top.
@@ -94,8 +92,8 @@ public void testBringToTop() throws CoreException {
9492
expectedResults = new IEditorPart[] { editorA, editorC, editorB };
9593
actualResults = page.getSortedParts();
9694
for (int i = 0; i < expectedResults.length; i++) {
97-
assertEquals(
98-
"bringToTop() does not change sorted part order.", expectedResults[i].getTitle(), actualResults[i].getPart(false).getTitle()); //$NON-NLS-1$
95+
assertEquals(expectedResults[i].getTitle(), actualResults[i].getPart(false).getTitle(),
96+
"bringToTop() does not change sorted part order."); //$NON-NLS-1$
9997
}
10098
}
10199
}

tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/PerspectiveSwitcherTest.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,24 @@
1515
package org.eclipse.ui.tests.internal;
1616

1717
import static org.eclipse.ui.PlatformUI.getWorkbench;
18-
import static org.junit.Assert.assertNotNull;
18+
import static org.junit.jupiter.api.Assertions.assertNotNull;
1919

2020
import org.eclipse.e4.ui.workbench.modeling.EModelService;
2121
import org.eclipse.jface.preference.IPreferenceStore;
2222
import org.eclipse.ui.IWorkbenchPreferenceConstants;
2323
import org.eclipse.ui.internal.WorkbenchWindow;
2424
import org.eclipse.ui.internal.util.PrefUtil;
25-
import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
26-
import org.eclipse.ui.tests.harness.util.PreferenceMementoRule;
27-
import org.junit.Rule;
28-
import org.junit.Test;
25+
import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension;
26+
import org.eclipse.ui.tests.harness.util.PreferenceMementoExtension;
27+
import org.junit.jupiter.api.Test;
28+
import org.junit.jupiter.api.extension.ExtendWith;
29+
import org.junit.jupiter.api.extension.RegisterExtension;
2930

31+
@ExtendWith(CloseTestWindowsExtension.class)
3032
public class PerspectiveSwitcherTest {
3133

32-
@Rule
33-
public final CloseTestWindowsRule closeTestWindowsRule = new CloseTestWindowsRule();
34-
35-
@Rule
36-
public final PreferenceMementoRule preferenceMemento = new PreferenceMementoRule();
34+
@RegisterExtension
35+
public final PreferenceMementoExtension preferenceMemento = new PreferenceMementoExtension();
3736

3837
/**
3938
* This test ensures that our workbench window's perspective bar can opened if
@@ -44,14 +43,14 @@ public void testCreatePerspectiveSwithcerInToolbar() {
4443
IPreferenceStore apiPreferenceStore = PrefUtil.getAPIPreferenceStore();
4544

4645
WorkbenchWindow window = (WorkbenchWindow) getWorkbench().getActiveWorkbenchWindow();
47-
assertNotNull("We should have a perspective bar in the beginning", getPerspectiveSwitcher(window)); //$NON-NLS-1$
46+
assertNotNull(getPerspectiveSwitcher(window), "We should have a perspective bar in the beginning"); //$NON-NLS-1$
4847

4948
// turn off the 'Open Perspective' item
5049
preferenceMemento.setPreference(apiPreferenceStore, IWorkbenchPreferenceConstants.SHOW_OPEN_ON_PERSPECTIVE_BAR,
5150
false);
5251

5352
// check that we still have a perspective bar
54-
assertNotNull("The perspective bar should have been created successfully", getPerspectiveSwitcher(window)); //$NON-NLS-1$
53+
assertNotNull(getPerspectiveSwitcher(window), "The perspective bar should have been created successfully"); //$NON-NLS-1$
5554

5655
}
5756

tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/StickyViewManagerTest.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
package org.eclipse.ui.tests.internal;
1616

1717
import static org.eclipse.ui.PlatformUI.getWorkbench;
18-
import static org.junit.Assert.assertNotNull;
19-
import static org.junit.Assert.assertNull;
18+
import static org.junit.jupiter.api.Assertions.assertNotNull;
19+
import static org.junit.jupiter.api.Assertions.assertNull;
2020

2121
import org.eclipse.ui.IPageLayout;
2222
import org.eclipse.ui.IPerspectiveDescriptor;
@@ -26,27 +26,26 @@
2626
import org.eclipse.ui.IWorkbenchPage;
2727
import org.eclipse.ui.IWorkbenchPreferenceConstants;
2828
import org.eclipse.ui.PlatformUI;
29-
import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
30-
import org.eclipse.ui.tests.harness.util.PreferenceMementoRule;
31-
import org.junit.Before;
32-
import org.junit.Ignore;
33-
import org.junit.Rule;
34-
import org.junit.Test;
29+
import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension;
30+
import org.eclipse.ui.tests.harness.util.PreferenceMementoExtension;
31+
import org.junit.jupiter.api.BeforeEach;
32+
import org.junit.jupiter.api.Disabled;
33+
import org.junit.jupiter.api.Test;
34+
import org.junit.jupiter.api.extension.ExtendWith;
35+
import org.junit.jupiter.api.extension.RegisterExtension;
3536

3637
/**
3738
* @since 3.6
3839
*/
39-
@Ignore
40+
@Disabled
41+
@ExtendWith(CloseTestWindowsExtension.class)
4042
public class StickyViewManagerTest {
4143

42-
@Rule
43-
public final CloseTestWindowsRule closeTestWindowsRule = new CloseTestWindowsRule();
44+
@RegisterExtension
45+
public final PreferenceMementoExtension preferenceMemento = new PreferenceMementoExtension();
4446

45-
@Rule
46-
public final PreferenceMementoRule preferenceMemento = new PreferenceMementoRule();
4747

48-
49-
@Before
48+
@BeforeEach
5049
public final void setUp() throws Exception {
5150
preferenceMemento.setPreference(PlatformUI.getPreferenceStore(),
5251
IWorkbenchPreferenceConstants.ENABLE_32_STICKY_CLOSE_BEHAVIOR, false);

tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/TextHandlerTest.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
import static org.eclipse.ui.tests.harness.util.UITestUtil.openTestWindow;
1818
import static org.eclipse.ui.tests.harness.util.UITestUtil.processEvents;
19-
import static org.junit.Assert.assertFalse;
20-
import static org.junit.Assert.assertTrue;
21-
import static org.junit.Assume.assumeFalse;
19+
import static org.junit.jupiter.api.Assertions.assertFalse;
20+
import static org.junit.jupiter.api.Assertions.assertTrue;
21+
import static org.junit.jupiter.api.Assumptions.assumeFalse;
2222

2323
import org.eclipse.core.runtime.Platform;
2424
import org.eclipse.swt.dnd.Clipboard;
@@ -27,23 +27,21 @@
2727
import org.eclipse.swt.dnd.URLTransfer;
2828
import org.eclipse.ui.IWorkbenchWindow;
2929
import org.eclipse.ui.actions.TextActionHandler;
30-
import org.eclipse.ui.tests.harness.util.CloseTestWindowsRule;
31-
import org.junit.Rule;
32-
import org.junit.Test;
30+
import org.eclipse.ui.tests.harness.util.CloseTestWindowsExtension;
31+
import org.junit.jupiter.api.Test;
32+
import org.junit.jupiter.api.extension.ExtendWith;
3333

3434
/**
3535
* Test for {@link TextActionHandler}.
3636
*
3737
* @since 3.5
3838
*/
39+
@ExtendWith(CloseTestWindowsExtension.class)
3940
public class TextHandlerTest {
4041

41-
@Rule
42-
public final CloseTestWindowsRule closeTestWindowsRule = new CloseTestWindowsRule();
43-
4442
@Test
4543
public void testEditableText() throws Exception {
46-
assumeFalse("Test fails on Mac: Bug 544675", Platform.OS_MACOSX.equals(Platform.getOS()));
44+
assumeFalse(Platform.OS_MACOSX.equals(Platform.getOS()), "Test fails on Mac: Bug 544675");
4745

4846
IWorkbenchWindow window = openTestWindow();
4947
TextControlView view = (TextControlView) window.getActivePage()

0 commit comments

Comments
 (0)