From bff69415f8bca56ee82f75de7c879545ff4e94c9 Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Tue, 27 Jan 2026 16:57:40 +0100 Subject: [PATCH] Migrate org.eclipse.e4.ui.tests to JUnit 5 --- .../META-INF/MANIFEST.MF | 1 - .../EModelServicePerspectiveFindTest.java | 338 +++++++++--------- .../renderers/swt/TabStateHandlerTest.java | 18 +- .../ThemeDefinitionChangedHandlerTest.java | 8 +- 4 files changed, 186 insertions(+), 179 deletions(-) diff --git a/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF index 29f82a244738..ca9302d7765b 100644 --- a/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF @@ -15,7 +15,6 @@ Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="2.4.0", org.eclipse.e4.core.contexts, org.eclipse.e4.core.di, org.eclipse.e4.ui.workbench;bundle-version="0.9.0", - org.junit;bundle-version="3.8.2", org.eclipse.e4.ui.workbench.swt;bundle-version="0.9.0", org.eclipse.e4.ui.model.workbench;bundle-version="1.2.0";visibility:=reexport, org.eclipse.e4.core.commands;bundle-version="0.9.0", diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EModelServicePerspectiveFindTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EModelServicePerspectiveFindTest.java index 72a45ae912a9..01bd5bf4666d 100644 --- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EModelServicePerspectiveFindTest.java +++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EModelServicePerspectiveFindTest.java @@ -14,9 +14,9 @@ package org.eclipse.e4.ui.tests.application; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; import org.eclipse.e4.core.contexts.IEclipseContext; @@ -31,178 +31,186 @@ import org.eclipse.e4.ui.workbench.Selector; import org.eclipse.e4.ui.workbench.modeling.EModelService; import org.eclipse.e4.ui.workbench.modeling.ElementMatcher; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; /** * Test EModelService with its various IN_*_PERSPECTIVE and OUTSIDE_PERSPECTIVE * flags. See bug 450130. */ -@RunWith(Parameterized.class) public class EModelServicePerspectiveFindTest { - @Parameters - public static Object[] data() { - return new Object[] { true, false }; - } - - /** If true, create simple app setup, otherwise a traditional setup */ - @Parameter - public boolean simple; - - private IEclipseContext applicationContext; - private EModelService modelService; - private MApplication app = null; - private MWindow window; - private MPerspectiveStack perspectiveStack; - private MPart partA; - private MPart partB; - private MPart outerPart; - private Selector selectAll; - - @Before - public void setUp() { - applicationContext = E4Application.createDefaultContext(); - modelService = applicationContext.get(EModelService.class); - selectAll = new ElementMatcher(null, null, (String) null); - if (simple) { - setupSimpleApplication(); - } else { - setupWorkbenchApplication(); + static abstract class AbstractPerspectiveFindTest { + private IEclipseContext applicationContext; + private EModelService modelService; + private MApplication app = null; + private MWindow window; + private MPerspectiveStack perspectiveStack; + private MPart partA; + private MPart partB; + private MPart outerPart; + + private Selector selectAll; + + abstract boolean isSimple(); + + @BeforeEach + public void setUp() { + applicationContext = E4Application.createDefaultContext(); + modelService = applicationContext.get(EModelService.class); + selectAll = new ElementMatcher(null, null, (String) null); + if (isSimple()) { + setupSimpleApplication(); + } else { + setupWorkbenchApplication(); + } + } + + @AfterEach + public void tearDown() { + applicationContext.dispose(); + } + + /** + * A simpler form of application setup as might be found in a new E4 app + */ + private void setupSimpleApplication() { + app = modelService.createModelElement(MApplication.class); + app.setContext(applicationContext); + window = modelService.createModelElement(MWindow.class); + window.setElementId("singleValidId"); + app.getChildren().add(window); + + setupPerspectiveStack(); + window.getChildren().add(perspectiveStack); + + outerPart = modelService.createModelElement(MPart.class); + MPartStack outerPartStack = modelService.createModelElement(MPartStack.class); + outerPartStack.getChildren().add(outerPart); + window.getChildren().add(outerPartStack); + + window.setSelectedElement(perspectiveStack); + } + + /** + * The form of application as might be found with an E3.x-based compat layer + */ + private void setupWorkbenchApplication() { + app = modelService.createModelElement(MApplication.class); + app.setContext(applicationContext); + window = modelService.createModelElement(MWindow.class); + window.setElementId("singleValidId"); + app.getChildren().add(window); + + MPartSashContainer topPSC = modelService.createModelElement(MPartSashContainer.class); + window.getChildren().add(topPSC); + + setupPerspectiveStack(); + topPSC.getChildren().add(perspectiveStack); + + MPartStack outerPartStack = modelService.createModelElement(MPartStack.class); + outerPart = modelService.createModelElement(MPart.class); + outerPartStack.getChildren().add(outerPart); + topPSC.getChildren().add(outerPartStack); + + window.setSelectedElement(topPSC); + topPSC.setSelectedElement(perspectiveStack); + } + + /** + * Creates a perspective stack with two perspectives A and B, each with a + * part stack with a single part. + */ + private void setupPerspectiveStack() { + perspectiveStack = modelService.createModelElement(MPerspectiveStack.class); + + MPerspective perspectiveA = modelService.createModelElement(MPerspective.class); + perspectiveStack.getChildren().add(perspectiveA); + MPartStack partStackA = modelService.createModelElement(MPartStack.class); + perspectiveA.getChildren().add(partStackA); + partA = modelService.createModelElement(MPart.class); + partStackA.getChildren().add(partA); + + MPerspective perspectiveB = modelService.createModelElement(MPerspective.class); + perspectiveStack.getChildren().add(perspectiveB); + MPartStack partStackB = modelService.createModelElement(MPartStack.class); + perspectiveB.getChildren().add(partStackB); + partB = modelService.createModelElement(MPart.class); + partStackB.getChildren().add(partB); + + perspectiveStack.setSelectedElement(perspectiveA); + } + + @Test + public void testInActivePerspective() { + List elements = modelService.findElements(window, MPart.class, EModelService.IN_ACTIVE_PERSPECTIVE, + selectAll); + assertNotNull(elements); + assertEquals(1, elements.size()); + assertEquals(partA, elements.get(0)); + } + + @Test + public void testInAnyPerspective() { + List elements = modelService.findElements(window, MPart.class, EModelService.IN_ANY_PERSPECTIVE, + selectAll); + assertNotNull(elements); + assertEquals(2, elements.size()); + assertTrue(elements.contains(partA)); + assertTrue(elements.contains(partB)); + } + + @Test + public void testOuterPerspective() { + List elements = modelService.findElements(window, MPart.class, EModelService.OUTSIDE_PERSPECTIVE, + selectAll); + assertNotNull(elements); + assertEquals(1, elements.size()); + assertTrue(elements.contains(outerPart)); + } + + @Test + public void testInTrim() { + List elements = modelService.findElements(window, MPart.class, EModelService.IN_TRIM, selectAll); + assertNotNull(elements); + assertEquals(0, elements.size()); + } + + @Test + public void testPresentation() { + List elements = modelService.findElements(window, MPart.class, EModelService.PRESENTATION, selectAll); + assertNotNull(elements); + assertEquals(2, elements.size()); + assertTrue(elements.contains(partA)); + assertTrue(elements.contains(outerPart)); + } + + @Test + public void testAnywhere() { + List elements = modelService.findElements(window, MPart.class, EModelService.ANYWHERE, selectAll); + assertNotNull(elements); + assertEquals(3, elements.size()); + assertTrue(elements.contains(partA)); + assertTrue(elements.contains(partB)); + assertTrue(elements.contains(outerPart)); } } - @After - public void tearDown() { - applicationContext.dispose(); - } - - /** - * A simpler form of application setup as might be found in a new E4 app - */ - private void setupSimpleApplication() { - app = modelService.createModelElement(MApplication.class); - app.setContext(applicationContext); - window = modelService.createModelElement(MWindow.class); - window.setElementId("singleValidId"); - app.getChildren().add(window); - - setupPerspectiveStack(); - window.getChildren().add(perspectiveStack); - - outerPart = modelService.createModelElement(MPart.class); - MPartStack outerPartStack = modelService.createModelElement(MPartStack.class); - outerPartStack.getChildren().add(outerPart); - window.getChildren().add(outerPartStack); - - window.setSelectedElement(perspectiveStack); - } - - /** - * The form of application as might be found with an E3.x-based compat layer - */ - private void setupWorkbenchApplication() { - app = modelService.createModelElement(MApplication.class); - app.setContext(applicationContext); - window = modelService.createModelElement(MWindow.class); - window.setElementId("singleValidId"); - app.getChildren().add(window); - - MPartSashContainer topPSC = modelService.createModelElement(MPartSashContainer.class); - window.getChildren().add(topPSC); - - setupPerspectiveStack(); - topPSC.getChildren().add(perspectiveStack); - - MPartStack outerPartStack = modelService.createModelElement(MPartStack.class); - outerPart = modelService.createModelElement(MPart.class); - outerPartStack.getChildren().add(outerPart); - topPSC.getChildren().add(outerPartStack); - - window.setSelectedElement(topPSC); - topPSC.setSelectedElement(perspectiveStack); - } - - /** - * Creates a perspective stack with two perspectives A and B, each with a - * part stack with a single part. - */ - private void setupPerspectiveStack() { - perspectiveStack = modelService.createModelElement(MPerspectiveStack.class); - - MPerspective perspectiveA = modelService.createModelElement(MPerspective.class); - perspectiveStack.getChildren().add(perspectiveA); - MPartStack partStackA = modelService.createModelElement(MPartStack.class); - perspectiveA.getChildren().add(partStackA); - partA = modelService.createModelElement(MPart.class); - partStackA.getChildren().add(partA); - - MPerspective perspectiveB = modelService.createModelElement(MPerspective.class); - perspectiveStack.getChildren().add(perspectiveB); - MPartStack partStackB = modelService.createModelElement(MPartStack.class); - perspectiveB.getChildren().add(partStackB); - partB = modelService.createModelElement(MPart.class); - partStackB.getChildren().add(partB); - - perspectiveStack.setSelectedElement(perspectiveA); - } - - @Test - public void testInActivePerspective() { - List elements = modelService.findElements(window, MPart.class, EModelService.IN_ACTIVE_PERSPECTIVE, - selectAll); - assertNotNull(elements); - assertEquals(1, elements.size()); - assertEquals(partA, elements.get(0)); - } - - @Test - public void testInAnyPerspective() { - List elements = modelService.findElements(window, MPart.class, EModelService.IN_ANY_PERSPECTIVE, - selectAll); - assertNotNull(elements); - assertEquals(2, elements.size()); - assertTrue(elements.contains(partA)); - assertTrue(elements.contains(partB)); - } - - @Test - public void testOuterPerspective() { - List elements = modelService.findElements(window, MPart.class, EModelService.OUTSIDE_PERSPECTIVE, - selectAll); - assertNotNull(elements); - assertEquals(1, elements.size()); - assertTrue(elements.contains(outerPart)); - } - - @Test - public void testInTrim() { - List elements = modelService.findElements(window, MPart.class, EModelService.IN_TRIM, selectAll); - assertNotNull(elements); - assertEquals(0, elements.size()); - } - - @Test - public void testPresentation() { - List elements = modelService.findElements(window, MPart.class, EModelService.PRESENTATION, selectAll); - assertNotNull(elements); - assertEquals(2, elements.size()); - assertTrue(elements.contains(partA)); - assertTrue(elements.contains(outerPart)); + @Nested + class Simple extends AbstractPerspectiveFindTest { + @Override + boolean isSimple() { + return true; + } } - @Test - public void testAnywhere() { - List elements = modelService.findElements(window, MPart.class, EModelService.ANYWHERE, selectAll); - assertNotNull(elements); - assertEquals(3, elements.size()); - assertTrue(elements.contains(partA)); - assertTrue(elements.contains(partB)); - assertTrue(elements.contains(outerPart)); + @Nested + class Workbench extends AbstractPerspectiveFindTest { + @Override + boolean isSimple() { + return false; + } } -} +} \ No newline at end of file diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/TabStateHandlerTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/TabStateHandlerTest.java index 8013e9352fe2..017e1a3e445a 100644 --- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/TabStateHandlerTest.java +++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/TabStateHandlerTest.java @@ -14,9 +14,9 @@ package org.eclipse.e4.ui.workbench.renderers.swt; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.lang.reflect.Method; import java.lang.reflect.Proxy; @@ -34,9 +34,9 @@ import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Widget; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.osgi.service.event.Event; public class TabStateHandlerTest { @@ -44,14 +44,14 @@ public class TabStateHandlerTest { private TabStateHandler handler; private Shell shell; - @Before + @BeforeEach public void setUp() throws Exception { shell = new Shell(); renderer = new StackRendererTestable(); handler = renderer.new TabStateHandler(); } - @After + @AfterEach public void tearDown() throws Exception { shell.dispose(); } @@ -313,4 +313,4 @@ private Event event(EventParam... params) { } return new Event("topic", paramsMap); } -} \ No newline at end of file +} diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/ThemeDefinitionChangedHandlerTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/ThemeDefinitionChangedHandlerTest.java index a22e9150a55e..9d83fff5c352 100644 --- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/ThemeDefinitionChangedHandlerTest.java +++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/ThemeDefinitionChangedHandlerTest.java @@ -14,8 +14,8 @@ package org.eclipse.e4.ui.workbench.renderers.swt; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -40,7 +40,7 @@ import org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.ThemeDefinitionChangedHandler; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Resource; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.osgi.service.event.Event; public class ThemeDefinitionChangedHandlerTest { @@ -201,4 +201,4 @@ public Set getUnusedResources() { return unusedResources; } } -} \ No newline at end of file +}