Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java	(revision 17381)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java	(revision 17383)
@@ -9,6 +9,6 @@
 import java.util.Collection;
 
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
 import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
@@ -38,5 +38,5 @@
         Collection<ExtendedSourceEntry> sources = new ValidatorTagCheckerRulesPreference.TagCheckerRulesSourceEditor()
                 .loadAndGetAvailableSources();
-        assertFalse(sources.isEmpty());
+        assertFalse(sources.isEmpty(), sources::toString);
         Collection<Throwable> allErrors = new ArrayList<>();
         MapCSSTagChecker tagChecker = new MapCSSTagChecker();
@@ -45,5 +45,5 @@
             try {
                 ParseResult result = tagChecker.addMapCSS(source.url);
-                assertFalse(result.parseChecks.isEmpty());
+                assertFalse(result.parseChecks.isEmpty(), result::toString);
                 System.out.println(result.parseErrors.isEmpty() ? " => OK" : " => KO");
                 allErrors.addAll(result.parseErrors);
@@ -54,5 +54,5 @@
             }
         }
-        assertTrue(allErrors.isEmpty());
+        assertTrue(allErrors.isEmpty(), allErrors::toString);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 17381)
+++ trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 17383)
@@ -36,4 +36,5 @@
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.Destroyable;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -121,10 +122,12 @@
             // removed and readded)
             for (int i = 0; i < 2; i++) {
-                assertFalse(PluginHandler.removePlugins(restartable));
-                assertTrue(restartable.stream().noneMatch(info -> PluginHandler.getPlugins().contains(info)));
+                assertFalse(PluginHandler.removePlugins(restartable), () -> Logging.getLastErrorAndWarnings().toString());
+                List<PluginInformation> notRemovedPlugins = restartable.stream()
+                        .filter(info -> PluginHandler.getPlugins().contains(info)).collect(Collectors.toList());
+                assertTrue(notRemovedPlugins.isEmpty(), notRemovedPlugins::toString);
                 loadPlugins(restartable);
             }
 
-            assertTrue(PluginHandler.removePlugins(loadedPlugins));
+            assertTrue(PluginHandler.removePlugins(loadedPlugins), () -> Logging.getLastErrorAndWarnings().toString());
             assertTrue(restartable.parallelStream().noneMatch(info -> PluginHandler.getPlugins().contains(info)));
         } catch (Exception | LinkageError t) {
@@ -162,8 +165,8 @@
         List<PluginInformation> plugins = pluginInfoDownloadTask.getAvailablePlugins();
         System.out.println("Original plugin list contains " + plugins.size() + " plugins");
-        assertFalse(plugins.isEmpty());
+        assertFalse(plugins.isEmpty(), plugins::toString);
         PluginInformation info = plugins.get(0);
-        assertFalse(info.getName().isEmpty());
-        assertFalse(info.getClass().getName().isEmpty());
+        assertFalse(info.getName().isEmpty(), info::toString);
+        assertFalse(info.getClass().getName().isEmpty(), info::toString);
 
         // Filter deprecated and unmaintained ones, or those not responsive enough to match our continuous integration needs
