From 425c26f1f992b9ca800c3684c8440619c96cfc65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Fri, 1 May 2026 00:16:50 +0200 Subject: [PATCH] test: migrate remaining org.junit.Assert calls to Jupiter Assertions The dead-code deletion in the prior commit removed every JUnit-4 test class but kept ten helper / utility classes still using org.junit.Assert.* statics. Migrate each call site to org.junit.jupiter.api.Assertions. Note the argument-order swap: Jupiter assertion methods take (condition, [message]) or (expected, actual, [message]) - the optional message moves to LAST position. Files migrated: com.avaloq.tools.ddk.test.core/src/.../mock/ServiceMock.java com.avaloq.tools.ddk.test.core/src/.../mock/ExtensionRegistryMock.java com.avaloq.tools.ddk.test.core/src/.../util/SimpleProgressMonitor.java com.avaloq.tools.ddk.test.core/src/.../util/JobMatcher.java com.avaloq.tools.ddk.test.ui/src/.../swtbot/util/SwtBotWizardUtil.java com.avaloq.tools.ddk.test.ui/src/.../swtbot/SwtWizardBot.java com.avaloq.tools.ddk.test.ui/src/.../swtbot/CoreSwtbotTools.java com.avaloq.tools.ddk.xtext.test.core/src/.../model/ModelUtil.java com.avaloq.tools.ddk.xtext.test.core/src/.../AcfContentAssistProcessorTestBuilder.java Bonus fix: jupiter/AbstractAcfContentAssistTest still imported org.junit.Assert.assertFalse / assertNotEquals / fail (the JUnit 4 twins of Jupiter's same-named statics). The Java compiler accepted this because the import names happen to match Jupiter symbols, but the call-sites used the JUnit 4 message-FIRST argument order, so the intended message was being passed as `unexpected`/`condition`. Switch the static imports to org.junit.jupiter.api.Assertions.* and fix the argument order at each call site. MANIFEST fix: com.avaloq.tools.ddk.test.ui's Require-Bundle was missing junit-jupiter-api, so the static-import-only call sites in SwtWizardBot/CoreSwtbotTools/SwtBotWizardUtil hit "Access restriction: The type 'Assertions' is not API". Added junit-jupiter-api to the bundle's Require-Bundle. Verified locally: tests=357 failures=0 errors=0 - first BUILD SUCCESS on this branch since rebasing onto the step-1.5 fix. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../ddk/test/core/mock/ExtensionRegistryMock.java | 4 ++-- .../tools/ddk/test/core/mock/ServiceMock.java | 4 ++-- .../tools/ddk/test/core/util/JobMatcher.java | 10 +++++----- .../ddk/test/core/util/SimpleProgressMonitor.java | 4 ++-- com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF | 1 + .../tools/ddk/test/ui/swtbot/CoreSwtbotTools.java | 6 +++--- .../tools/ddk/test/ui/swtbot/SwtWizardBot.java | 12 ++++++------ .../ddk/test/ui/swtbot/util/SwtBotWizardUtil.java | 4 ++-- .../test/AcfContentAssistProcessorTestBuilder.java | 12 ++++++------ .../test/jupiter/AbstractAcfContentAssistTest.java | 14 +++++++------- .../tools/ddk/xtext/test/model/ModelUtil.java | 4 ++-- 11 files changed, 38 insertions(+), 37 deletions(-) diff --git a/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/mock/ExtensionRegistryMock.java b/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/mock/ExtensionRegistryMock.java index d9b1b5bb1b..b6da91dc6c 100644 --- a/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/mock/ExtensionRegistryMock.java +++ b/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/mock/ExtensionRegistryMock.java @@ -25,7 +25,7 @@ import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.RegistryFactory; import org.eclipse.emf.common.util.WrappedException; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import org.mockito.stubbing.Answer; import com.google.common.collect.LinkedHashMultimap; @@ -179,7 +179,7 @@ public static void assertUnMocked() { if (registrySpy != null) { try { String extensionPointId = configurationElements.keySet().iterator().next(); - Assert.fail("Extension point " + extensionPointId + " still has mocked configuration elements."); //$NON-NLS-1$ //$NON-NLS-2$ + Assertions.fail("Extension point " + extensionPointId + " still has mocked configuration elements."); //$NON-NLS-1$ //$NON-NLS-2$ } catch (NoSuchElementException e) { // shouldn't happen throw new IllegalStateException("The extension registry mock is in an unexpected state.", e); //$NON-NLS-1$ } diff --git a/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/mock/ServiceMock.java b/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/mock/ServiceMock.java index 11ab1a0811..ee0580e68b 100644 --- a/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/mock/ServiceMock.java +++ b/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/mock/ServiceMock.java @@ -14,7 +14,7 @@ import java.util.Iterator; import java.util.Map; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; /** @@ -49,7 +49,7 @@ public static void assertAllMocksRemoved() { Iterator> iterator = originalServices.keySet().iterator(); while (iterator.hasNext()) { Class clazz = iterator.next(); - Assert.fail("Service " + clazz.getName() + " is still mocked."); //$NON-NLS-1$//$NON-NLS-2$ + Assertions.fail("Service " + clazz.getName() + " is still mocked."); //$NON-NLS-1$//$NON-NLS-2$ } } } diff --git a/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/util/JobMatcher.java b/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/util/JobMatcher.java index 6605221f6f..3c3a8d56e6 100644 --- a/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/util/JobMatcher.java +++ b/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/util/JobMatcher.java @@ -19,7 +19,7 @@ import org.eclipse.core.runtime.jobs.IJobChangeEvent; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.JobChangeAdapter; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; @@ -214,7 +214,7 @@ public final void deregister() { * the expected number of jobs */ public final void assertNumberOfNewJobs(final int expected) { - Assert.assertEquals("Wrong number of jobs were scheduled", expected, newJobs.size()); + Assertions.assertEquals(expected, newJobs.size(), "Wrong number of jobs were scheduled"); } /** @@ -227,13 +227,13 @@ public final void assertNumberOfNewJobs(final int expected) { public final void assertNewJobsFinished() { try { List expectedJobs = Lists.newArrayList(newJobs); - Assert.assertFalse("No matching new jobs were scheduled: " + finder, expectedJobs.isEmpty()); + Assertions.assertFalse(expectedJobs.isEmpty(), "No matching new jobs were scheduled: " + finder); expectedJobs.removeAll(finishedJobs); while (!expectedJobs.isEmpty()) { try { Job job = getNextJob(); if (job == null) { - Assert.fail("Expected new jobs did not finish after " + waitTimeout + " milliseconds: " + expectedJobs); + Assertions.fail("Expected new jobs did not finish after " + waitTimeout + " milliseconds: " + expectedJobs); } expectedJobs.remove(job); } catch (InterruptedException e) { @@ -261,7 +261,7 @@ public final void waitForExistingJobs() { try { Job job = getNextJob(); if (job == null) { - Assert.fail("Existing jobs did not finish after " + waitTimeout + " milliseconds: " + expectedJobs); + Assertions.fail("Existing jobs did not finish after " + waitTimeout + " milliseconds: " + expectedJobs); } expectedJobs.remove(job); } catch (InterruptedException e) { diff --git a/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/util/SimpleProgressMonitor.java b/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/util/SimpleProgressMonitor.java index 01cf8bedd8..754acb8607 100644 --- a/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/util/SimpleProgressMonitor.java +++ b/com.avaloq.tools.ddk.test.core/src/com/avaloq/tools/ddk/test/core/util/SimpleProgressMonitor.java @@ -11,7 +11,7 @@ package com.avaloq.tools.ddk.test.core.util; import org.eclipse.core.runtime.IProgressMonitor; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; /** @@ -169,7 +169,7 @@ public void waitForTermination() { final long timeStarted = System.currentTimeMillis(); while (!isTerminated()) { long remainingWaitTime = TIMEOUT + timeStarted - System.currentTimeMillis(); - Assert.assertFalse("Progress monitor did not get done signal", remainingWaitTime <= 0); //$NON-NLS-1$ + Assertions.assertFalse(remainingWaitTime <= 0, "Progress monitor did not get done signal"); //$NON-NLS-1$ try { this.wait(remainingWaitTime); } catch (InterruptedException e) /* CHECKSTYLE:OFF */ { diff --git a/com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF b/com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF index 020b707efc..9da8b65993 100644 --- a/com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF +++ b/com.avaloq.tools.ddk.test.ui/META-INF/MANIFEST.MF @@ -18,6 +18,7 @@ Require-Bundle: com.avaloq.tools.ddk.test.core, org.eclipse.ui;visibility:=reexport, org.hamcrest.library, org.junit, + junit-jupiter-api, org.mockito.mockito-core, com.google.guava, org.apache.commons.lang3, diff --git a/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/CoreSwtbotTools.java b/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/CoreSwtbotTools.java index 0098da9e6b..ecf30f58c6 100644 --- a/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/CoreSwtbotTools.java +++ b/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/CoreSwtbotTools.java @@ -11,7 +11,7 @@ package com.avaloq.tools.ddk.test.ui.swtbot; import static org.eclipse.swtbot.swt.finder.waits.Conditions.widgetIsEnabled; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.awt.AWTException; import java.awt.Robot; @@ -455,7 +455,7 @@ public static void openView(final SWTWorkbenchBot bot, final String category, fi } } } - assertTrue("View or Category found", bot.button().isEnabled()); + assertTrue(bot.button().isEnabled(), "View or Category found"); bot.button("OK").click(); } @@ -498,7 +498,7 @@ public static SWTBotTreeItem findTreeItem(final SWTWorkbenchBot bot, final SWTBo } } while (itemCount > 0); - assertTrue("Searching TreeItem", itemFound); + assertTrue(itemFound, "Searching TreeItem"); return botTreeItem; diff --git a/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/SwtWizardBot.java b/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/SwtWizardBot.java index d22130a94d..9e390078c1 100644 --- a/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/SwtWizardBot.java +++ b/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/SwtWizardBot.java @@ -12,7 +12,7 @@ import static com.avaloq.tools.ddk.test.ui.swtbot.util.SwtBotWizardUtil.selectItem; import static org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable.syncExec; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Arrays; @@ -49,7 +49,7 @@ public class SwtWizardBot extends SwtWorkbenchBot { public void closeWizard() { SWTBotShell activeShell = activeShell(); boolean wizardIsActive = isWizard(activeShell); - assertTrue("Wizard is active on close", wizardIsActive); + assertTrue(wizardIsActive, "Wizard is active on close"); activeShell.close(); } @@ -155,13 +155,13 @@ public void openExportWizard(final String wizardName) { * name of the wizard to be activated */ private void activateWizard(final String wizardName) { - assertTrue("A wizard dialog must be active", syncExec(() -> { + assertTrue(syncExec(() -> { SWTBotShell wizardShell = activeShell(); return wizardShell.widget.getData() instanceof WizardDialog; - })); - assertTrue("Wizard '" + wizardName + "' does not exist.", syncExec(() -> { + }), "A wizard dialog must be active"); + assertTrue(syncExec(() -> { return selectItem(tree(), wizardName); - })); + }), "Wizard '" + wizardName + "' does not exist."); clickButton(NEXT); } diff --git a/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/util/SwtBotWizardUtil.java b/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/util/SwtBotWizardUtil.java index fc73ed9588..582706d1d0 100644 --- a/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/util/SwtBotWizardUtil.java +++ b/com.avaloq.tools.ddk.test.ui/src/com/avaloq/tools/ddk/test/ui/swtbot/util/SwtBotWizardUtil.java @@ -18,7 +18,7 @@ import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; import org.eclipse.ui.PlatformUI; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import com.avaloq.tools.ddk.test.ui.swtbot.SwtWorkbenchBot; @@ -48,7 +48,7 @@ public static void selectProjectFolder(final SwtWorkbenchBot bot, final String f final Tree tree = bot.widget(WidgetMatcherFactory.widgetOfType(Tree.class), comp); PlatformUI.getWorkbench().getDisplay().syncExec(() -> { SWTBotTree botTree = new SWTBotTree(tree); - Assert.assertTrue("folder was not found", selectItem(botTree, folderName)); + Assertions.assertTrue(selectItem(botTree, folderName), "folder was not found"); }); } diff --git a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/AcfContentAssistProcessorTestBuilder.java b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/AcfContentAssistProcessorTestBuilder.java index 9193c91fc4..35b9c868df 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/AcfContentAssistProcessorTestBuilder.java +++ b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/AcfContentAssistProcessorTestBuilder.java @@ -11,7 +11,7 @@ package com.avaloq.tools.ddk.xtext.test; // CHECKSTYLE:OFF -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotNull; import java.text.MessageFormat; import java.util.concurrent.atomic.AtomicReference; @@ -35,7 +35,7 @@ import org.eclipse.xtext.util.Pair; import org.eclipse.xtext.util.StringInputStream; import org.eclipse.xtext.util.Tuples; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import com.google.inject.Injector; @@ -111,7 +111,7 @@ public AcfContentAssistProcessorTestBuilder applyText(final String expectedDispl break; } } - assertNotNull(MessageFormat.format("\"{0}\" not a valid completion proposal", expectedDisplayString), proposal); + assertNotNull(proposal, MessageFormat.format("\"{0}\" not a valid completion proposal", expectedDisplayString)); String text = ""; if (proposal instanceof ConfigurableCompletionProposal) { text = ((ConfigurableCompletionProposal) proposal).getReplacementString(); @@ -180,11 +180,11 @@ public ContentAssistProcessorTestBuilder assertMatchString(final String matchStr ContentAssistContext.Factory factory = get(ContentAssistContext.Factory.class); ContentAssistContext[] contexts = factory.create(sourceViewer, currentModelToParse.length(), xtextResource); for (ContentAssistContext context : contexts) { - Assert.assertTrue("matchString = '" + matchString + "', actual: '" + context.getPrefix() + "'", "".equals(context.getPrefix()) - || matchString.equals(context.getPrefix())); + Assertions.assertTrue("".equals(context.getPrefix()) + || matchString.equals(context.getPrefix()), "matchString = '" + matchString + "', actual: '" + context.getPrefix() + "'"); } } else { - Assert.fail("No content assistant for content type " + contentType); + Assertions.fail("No content assistant for content type " + contentType); } } catch (BadLocationException e) { exception.set(e); diff --git a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/jupiter/AbstractAcfContentAssistTest.java b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/jupiter/AbstractAcfContentAssistTest.java index 4d221959df..07cf40a3de 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/jupiter/AbstractAcfContentAssistTest.java +++ b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/jupiter/AbstractAcfContentAssistTest.java @@ -10,9 +10,9 @@ *******************************************************************************/ package com.avaloq.tools.ddk.xtext.test.jupiter; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.fail; import java.text.MessageFormat; import java.util.Arrays; @@ -90,7 +90,7 @@ private String getCompletionProposalDisplayStrings(final ICompletionProposal... * the expected proposals as display strings */ private void assertCompletionProposal(final ICompletionProposal[] computedProposals, final boolean positiveTest, final String... proposals) { - assertNotEquals(AT_LEAST_ONE_PROPOSAL_WAS_PROVIDED, proposals.length, 0); + assertNotEquals(0, proposals.length, AT_LEAST_ONE_PROPOSAL_WAS_PROVIDED); for (final String s : proposals) { boolean foundProposal = false; for (ICompletionProposal p : computedProposals) { @@ -155,7 +155,7 @@ protected void assertNotCompletionProposal(final ICompletionProposal[] computedP * the expected proposals as display strings */ protected void assertExactlyCompletionProposal(final ICompletionProposal[] computedProposals, final String... expectedProposals) { - assertNotEquals(AT_LEAST_ONE_PROPOSAL_WAS_PROVIDED, expectedProposals.length, 0); + assertNotEquals(0, expectedProposals.length, AT_LEAST_ONE_PROPOSAL_WAS_PROVIDED); Set computedProposalsAsSet = new HashSet(); for (ICompletionProposal p : computedProposals) { @@ -190,8 +190,8 @@ protected void assertExactlyCompletionProposal(final ICompletionProposal[] compu private void assertSourceProposals(final String sourceFileName) { try { AcfContentAssistProcessorTestBuilder builder = newBuilder().append(getTestSource(sourceFileName).getContent()); - assertFalse(EXPECTED_PROPOSALS_NOT_SET, (acfContentAssistMarkerTagInfo.expectedProposalMap.isEmpty() - && acfContentAssistMarkerTagInfo.notExpectedProposalMap.isEmpty() && acfContentAssistMarkerTagInfo.expectedExactlyProposalMap.isEmpty())); + assertFalse((acfContentAssistMarkerTagInfo.expectedProposalMap.isEmpty() + && acfContentAssistMarkerTagInfo.notExpectedProposalMap.isEmpty() && acfContentAssistMarkerTagInfo.expectedExactlyProposalMap.isEmpty()), EXPECTED_PROPOSALS_NOT_SET); for (int markerId : getUsedTagsItems()) { final ICompletionProposal[] proposals = builder.computeCompletionProposals(getOffsetForTag(markerId)); if (acfContentAssistMarkerTagInfo.expectedProposalMap.containsKey(markerId)) { diff --git a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/model/ModelUtil.java b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/model/ModelUtil.java index 3141572b4f..60cbc6239c 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/model/ModelUtil.java +++ b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/model/ModelUtil.java @@ -14,7 +14,7 @@ import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; -import org.junit.Assert; +import org.junit.jupiter.api.Assertions; import com.google.common.collect.Iterables; import com.google.common.collect.Iterators; @@ -84,7 +84,7 @@ public Iterable getAllInstancesOf(final EObject context, // CHECKSTYLE:ON return Iterables.filter(getAllInstancesOf(context, type), input -> { if (input.eClass().getEStructuralFeature(feature.getFeatureID()) != feature) { - Assert.fail("Feature " + feature + " is not a feature of " + input.eClass()); //$NON-NLS-1$ //$NON-NLS-2$ + Assertions.fail("Feature " + feature + " is not a feature of " + input.eClass()); //$NON-NLS-1$ //$NON-NLS-2$ } final Object valueOfFeature = input.eGet(feature); return valueOfFeature != null && valueOfFeature.equals(value);