This is an automated email from the ASF dual-hosted git repository.

pjfanning pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git


The following commit(s) were added to refs/heads/trunk by this push:
     new c471107ca3 Add TestAssertions class and replace 
assertTrue(x.contains(y)) patterns across all modules (#1081)
c471107ca3 is described below

commit c471107ca325dc8f722aed88e3b95776ea56d8b7
Author: PJ Fanning <[email protected]>
AuthorDate: Mon May 25 19:12:22 2026 +0100

    Add TestAssertions class and replace assertTrue(x.contains(y)) patterns 
across all modules (#1081)
    
    * Add TestAssertions class and replace assertTrue(x.contains(y)) patterns 
across all modules
    
    Agent-Logs-Url: 
https://github.com/pjfanning/poi/sessions/dd0ae5e4-5ba3-4836-904d-91f53da06610
    
    Co-authored-by: pjfanning <[email protected]>
    
    * use POITestCase
    
    * more
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] 
<[email protected]>
    Co-authored-by: pjfanning <[email protected]>
---
 .../org/apache/poi/integration/TestXLSX2CSV.java   | 14 ++++-----
 .../org/apache/poi/ss/excelant/TestBuildFile.java  |  5 ++--
 .../ss/excelant/util/TestExcelAntWorkbookUtil.java | 25 ++++++++--------
 .../poi/extractor/ooxml/TestExtractorFactory.java  |  3 +-
 .../poi/openxml4j/TestOPCPackageFileLimit.java     |  8 ++---
 .../org/apache/poi/openxml4j/opc/TestPackage.java  | 15 +++++-----
 .../apache/poi/openxml4j/opc/TestStreamHelper.java | 10 +++----
 .../poi/poifs/crypt/tests/TestSecureTempZip.java   |  4 +--
 .../extractor/TestXSLFPowerPointExtractor.java     |  9 +++---
 .../xslf/usermodel/TestXSLFSlideShowFactory.java   |  3 +-
 .../org/apache/poi/xssf/TestXSSFFileChecks.java    | 11 +++----
 .../poi/xssf/eventusermodel/TestXSSFReader.java    |  4 +--
 .../poi/xssf/extractor/TestXSSFExcelExtractor.java |  9 +++---
 .../apache/poi/xssf/streaming/TestOutlining.java   |  9 +++---
 .../apache/poi/xssf/usermodel/TestFormulaEval.java | 23 +++++----------
 .../apache/poi/xssf/usermodel/TestXSSFBugs.java    |  3 +-
 .../apache/poi/xssf/usermodel/TestXSSFDrawing.java | 19 +++++-------
 .../poi/xssf/usermodel/TestXSSFOptimiser.java      |  4 +--
 .../poi/xssf/usermodel/TestXSSFRichTextString.java |  7 +++--
 .../apache/poi/xssf/usermodel/TestXSSFTextRun.java |  3 +-
 .../poi/xssf/usermodel/TestXSSFVMLDrawing.java     |  3 +-
 .../poi/xssf/usermodel/TestXSSFWorkbook.java       |  3 +-
 .../java/org/apache/poi/xwpf/TestXWPFBugs.java     |  6 ++--
 .../poi/xwpf/extractor/TestXWPFWordExtractor.java  |  5 ++--
 .../test/java/org/apache/poi/hmef/TestBugs.java    |  6 ++--
 .../apache/poi/hslf/extractor/TestExtractor.java   |  9 +++---
 .../test/java/org/apache/poi/hsmf/TestBasics.java  |  2 +-
 .../hsmf/extractor/TestOutlookTextExtractor.java   | 23 ++++++++-------
 .../hwpf/converter/TestWordToHtmlConverter.java    |  5 ++--
 .../hwpf/converter/TestWordToTextConverter.java    | 20 ++++++-------
 .../org/apache/poi/hwpf/usermodel/TestBugs.java    |  7 +++--
 poi/src/test/java/org/apache/poi/POITestCase.java  | 34 +++++++++++-----------
 .../test/java/org/apache/poi/TestPOITestCase.java  |  2 +-
 .../poi/hssf/extractor/TestOldExcelExtractor.java  |  2 +-
 .../hssf/record/TestRecordFactoryInputStream.java  |  4 +--
 .../poi/hssf/usermodel/TestHSSFDataFormatter.java  |  4 +--
 .../poi/hssf/usermodel/TestHSSFWorkbook.java       |  6 ++--
 .../poifs/filesystem/TestOfficeXMLException.java   |  6 ++--
 .../poi/poifs/filesystem/TestOle10Native.java      |  4 +--
 .../poi/poifs/filesystem/TestPOIFSFileSystem.java  |  3 +-
 .../apache/poi/ss/formula/TestFormulaShifter.java  |  8 ++---
 .../poi/ss/formula/TestFunctionRegistry.java       |  4 +--
 .../apache/poi/ss/usermodel/TestDataFormatter.java |  3 +-
 .../apache/poi/ss/util/TestCellRangeAddress.java   |  3 +-
 .../org/apache/poi/ss/util/TestCellReference.java  |  3 +-
 .../test/java/org/apache/poi/util/TestHexDump.java |  6 ++--
 .../apache/poi/util/TestLittleEndianStreams.java   |  8 ++---
 .../java/org/apache/poi/util/TestXMLHelper.java    |  5 ++--
 48 files changed, 192 insertions(+), 190 deletions(-)

diff --git 
a/poi-examples/src/test/java/org/apache/poi/integration/TestXLSX2CSV.java 
b/poi-examples/src/test/java/org/apache/poi/integration/TestXLSX2CSV.java
index 652bf69097..ec26a739e1 100644
--- a/poi-examples/src/test/java/org/apache/poi/integration/TestXLSX2CSV.java
+++ b/poi-examples/src/test/java/org/apache/poi/integration/TestXLSX2CSV.java
@@ -17,10 +17,10 @@
 
 package org.apache.poi.integration;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.io.PrintStream;
@@ -70,7 +70,7 @@ public class TestXLSX2CSV {
         XLSX2CSV.main(new String[0]);
 
         String output = errorBytes.toString(StandardCharsets.UTF_8);
-        assertTrue(output.contains("XLSX2CSV <xlsx file>"), "Had: " + output);
+        assertContains(output, "XLSX2CSV <xlsx file>");
     }
 
     @Test
@@ -79,7 +79,7 @@ public class TestXLSX2CSV {
         XLSX2CSV.main(new String[] { "not-existing-file.xlsx" });
 
         String output = errorBytes.toString(StandardCharsets.UTF_8);
-        assertTrue(output.contains("Not found or not a file: 
not-existing-file.xlsx"), "Had: " + output);
+        assertContains(output, "Not found or not a file: 
not-existing-file.xlsx");
     }
 
     @Test
@@ -97,8 +97,8 @@ public class TestXLSX2CSV {
         assertEquals("", errorOutput);
 
         String output = outputBytes.toString(StandardCharsets.UTF_8);
-        assertTrue(output.contains("\"Lorem\",111"), "Had: " + output);
-        assertTrue(output.contains(",\"hello, xssf\",,\"hello, xssf\""), "Had: 
" + output);
+        assertContains(output, "\"Lorem\",111");
+        assertContains(output, ",\"hello, xssf\",,\"hello, xssf\"");
     }
 
     @Test
@@ -135,8 +135,8 @@ public class TestXLSX2CSV {
         assertEquals("", errorOutput);
 
         String output = outputBytes.toString(StandardCharsets.UTF_8);
-               assertTrue(output.contains("\"Lorem\",111,,,"), "Had: " + 
output);
-               assertTrue(output.contains(",\"hello, xssf\",,\"hello, 
xssf\","), "Had: " + output);
+               assertContains(output, "\"Lorem\",111,,,");
+               assertContains(output, ",\"hello, xssf\",,\"hello, xssf\",");
     }
 
        @Disabled("Used for local micro-benchmarking")
diff --git 
a/poi-excelant/src/test/java/org/apache/poi/ss/excelant/TestBuildFile.java 
b/poi-excelant/src/test/java/org/apache/poi/ss/excelant/TestBuildFile.java
index 8e4d783348..881fed5917 100644
--- a/poi-excelant/src/test/java/org/apache/poi/ss/excelant/TestBuildFile.java
+++ b/poi-excelant/src/test/java/org/apache/poi/ss/excelant/TestBuildFile.java
@@ -19,7 +19,7 @@
 package org.apache.poi.ss.excelant;
 
 import static org.apache.poi.POITestCase.assertContains;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -28,6 +28,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.io.File;
 
 import org.apache.poi.POIDataSamples;
+import org.apache.poi.POITestCase;
 import org.apache.tools.ant.BuildEvent;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.BuildListener;
@@ -99,7 +100,7 @@ public class TestBuildFile {
      * Assert that the given substring is not in the log messages.
      */
     void assertLogNotContaining(String substring) {
-        assertNotContained(getLog(), substring);
+        POITestCase.assertNotContains(getLog(), substring);
     }
 
     /**
diff --git 
a/poi-excelant/src/test/java/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java
 
b/poi-excelant/src/test/java/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java
index 545801c722..cf709a4926 100644
--- 
a/poi-excelant/src/test/java/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java
+++ 
b/poi-excelant/src/test/java/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java
@@ -16,6 +16,7 @@
 ==================================================================== */
 package org.apache.poi.ss.excelant.util;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -63,7 +64,7 @@ class TestExcelAntWorkbookUtil {
     @Test
     void testLoadNotExistingFile() {
         BuildException e = assertThrows(BuildException.class, () -> new 
ExcelAntWorkbookUtilTestHelper("notexistingFile"));
-        assertTrue(e.getMessage().contains("notexistingFile"));
+        assertContains(e.getMessage(), "notexistingFile");
     }
 
     @Test
@@ -211,9 +212,9 @@ class TestExcelAntWorkbookUtil {
                                                                 precision);
 
         //System.out.println(result);
-        assertTrue( 
result.toString().contains("evaluationCompletedWithError=false"), "Had:" + 
result );
-        assertTrue( result.toString().contains("returnValue=790.79"), "Had:" + 
result );
-        assertTrue( 
result.toString().contains("cellName='MortgageCalculator'!B4"), "Had:" + result 
);
+        assertContains(result.toString(), 
"evaluationCompletedWithError=false");
+        assertContains(result.toString(), "returnValue=790.79");
+        assertContains(result.toString(), "cellName='MortgageCalculator'!B4");
         assertFalse(result.toString().contains("#N/A"));
 
         assertFalse(result.evaluationCompleteWithError());
@@ -234,9 +235,9 @@ class TestExcelAntWorkbookUtil {
                                                                 precision);
 
         //System.out.println(result);
-        assertTrue( 
result.toString().contains("evaluationCompletedWithError=false"), "Had:" + 
result );
-        assertTrue( result.toString().contains("returnValue=790.79"), "Had:" + 
result );
-        assertTrue( 
result.toString().contains("cellName='MortgageCalculator'!B4"), "Had:" + result 
);
+        assertContains(result.toString(), 
"evaluationCompletedWithError=false");
+        assertContains(result.toString(), "returnValue=790.79");
+        assertContains(result.toString(), "cellName='MortgageCalculator'!B4");
         assertFalse( result.toString().contains("#"), "Should not see an 
error, but had:" + result );
 
         assertFalse(result.evaluationCompleteWithError());
@@ -257,10 +258,10 @@ class TestExcelAntWorkbookUtil {
                                                                 precision);
 
         System.out.println(result);
-        assertTrue( 
result.toString().contains("evaluationCompletedWithError=true"), "Had:" + 
result );
-        assertTrue( result.toString().contains("returnValue=0.0"), "Had:" + 
result );
-        assertTrue( result.toString().contains("cellName='ErrorCell'!A1"), 
"Had:" + result );
-        assertTrue( result.toString().contains("#N/A"), "Had:" + result );
+        assertContains(result.toString(), "evaluationCompletedWithError=true");
+        assertContains(result.toString(), "returnValue=0.0");
+        assertContains(result.toString(), "cellName='ErrorCell'!A1");
+        assertContains(result.toString(), "#N/A");
 
         assertTrue(result.evaluationCompleteWithError());
         assertFalse(result.didTestPass());
@@ -299,7 +300,7 @@ class TestExcelAntWorkbookUtil {
 
         fixture = new 
ExcelAntWorkbookUtilTestHelper(mortgageCalculatorFileName);
         BuildException e = assertThrows(BuildException.class, () -> 
fixture.setStringValue(cell, "some"));
-        assertTrue(e.getMessage().contains("NotexistingSheet"));
+        assertContains(e.getMessage(), "NotexistingSheet");
     }
 
     @Test
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/extractor/ooxml/TestExtractorFactory.java
 
b/poi-ooxml/src/test/java/org/apache/poi/extractor/ooxml/TestExtractorFactory.java
index acf4881f79..0a670677de 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/extractor/ooxml/TestExtractorFactory.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/extractor/ooxml/TestExtractorFactory.java
@@ -221,8 +221,7 @@ class TestExtractorFactory {
         // Not really an Extractor test, but we'll leave it to test POIFS 
reaction anyway ...
         //noinspection resource
         IOException ex = assertThrows(IOException.class, () -> new 
POIFSFileSystem(txt));
-        assertTrue(ex.getMessage().contains("Invalid header signature; read 
0x3D20726F68747541, expected 0xE11AB1A1E011CFD0"),
-                "Had: " + ex);
+        assertContains(ex.getMessage(), "Invalid header signature; read 
0x3D20726F68747541, expected 0xE11AB1A1E011CFD0");
     }
 
     @Test
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/TestOPCPackageFileLimit.java 
b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/TestOPCPackageFileLimit.java
index 02f81ccd51..7ddf3fd4d3 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/TestOPCPackageFileLimit.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/TestOPCPackageFileLimit.java
@@ -28,7 +28,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.fail;
 
 @Isolated // changes static values, so other tests should not run at the same 
time
@@ -41,8 +41,7 @@ class TestOPCPackageFileLimit {
             OPCPackage opcPackage = OPCPackage.open(is);
             fail("expected IOException");
         } catch (IOException e) {
-            
assertTrue(e.getMessage().contains("ZipSecureFile.setMaxFileCount()"),
-                    "unexpected exception message: " + e.getMessage());
+            assertContains(e.getMessage(), "ZipSecureFile.setMaxFileCount()");
         } finally {
             ZipSecureFile.setMaxFileCount(defaultLimit);
         }
@@ -57,8 +56,7 @@ class TestOPCPackageFileLimit {
             OPCPackage opcPackage = OPCPackage.open(file);
             fail("expected InvalidFormatException");
         } catch (InvalidFormatException e) {
-            
assertTrue(e.getMessage().contains("ZipSecureFile.setMaxFileCount()"),
-                    "unexpected exception message: " + e.getMessage());
+            assertContains(e.getMessage(), "ZipSecureFile.setMaxFileCount()");
         } finally {
             ZipSecureFile.setMaxFileCount(defaultLimit);
         }
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestPackage.java 
b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestPackage.java
index 520e1ce774..e7203bd67f 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestPackage.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestPackage.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.openxml4j.opc;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.openxml4j.OpenXML4JTestDataSamples.getOutputFile;
 import static org.apache.poi.openxml4j.OpenXML4JTestDataSamples.getSampleFile;
 import static 
org.apache.poi.openxml4j.OpenXML4JTestDataSamples.getSampleFileName;
@@ -717,7 +718,7 @@ public final class TestPackage {
         }
 
         IOException ex = assertThrows(IOException.class, () -> 
WorkbookFactory.create(bos.toInputStream()));
-        assertTrue(ex.getMessage().contains("Zip bomb detected!"));
+        assertContains(ex.getMessage(), "Zip bomb detected!");
     }
 
     @Test
@@ -726,7 +727,7 @@ public final class TestPackage {
             IllegalStateException.class,
             () -> openXmlBombFile("poc-shared-strings.xlsx")
         );
-        assertTrue(ex.getMessage().contains("The text would exceed the max 
allowed overall size of extracted text."));
+        assertContains(ex.getMessage(), "The text would exceed the max allowed 
overall size of extracted text.");
     }
 
     @Test
@@ -738,7 +739,7 @@ public final class TestPackage {
                 IllegalStateException.class,
                 () -> openXmlBombFile("poc-shared-strings.xlsx")
             );
-            assertTrue(ex.getMessage().contains("The text would exceed the max 
allowed overall size of extracted text."));
+            assertContains(ex.getMessage(), "The text would exceed the max 
allowed overall size of extracted text.");
         } finally {
             ExtractorFactory.setThreadPrefersEventExtractors(before);
         }
@@ -754,7 +755,7 @@ public final class TestPackage {
                     IOException.class,
                     () -> openXmlBombFile("poc-xmlbomb.xlsx")
             );
-            assertTrue(ex.getMessage().contains("unable to parse shared 
strings table"));
+            assertContains(ex.getMessage(), "unable to parse shared strings 
table");
             assertTrue(matchSAXEx(ex));
         } finally {
             
POIXMLTypeLoader.DEFAULT_XML_OPTIONS.setDisallowDocTypeDeclaration(originalFlag);
@@ -770,7 +771,7 @@ public final class TestPackage {
                 IOException.class,
                 () -> openXmlBombFile("poc-xmlbomb-empty.xlsx")
             );
-            assertTrue(ex.getMessage().contains("unable to parse shared 
strings table"));
+            assertContains(ex.getMessage(), "unable to parse shared strings 
table");
             assertTrue(matchSAXEx(ex));
         } finally {
             
POIXMLTypeLoader.DEFAULT_XML_OPTIONS.setDisallowDocTypeDeclaration(originalFlag);
@@ -818,7 +819,7 @@ public final class TestPackage {
                 ZipSecureFile.setMinInflateRatio(min_ratio+0.002);
             })
         );
-        assertTrue(ex.getMessage().contains("You can adjust this limit via 
ZipSecureFile.setMinInflateRatio()"));
+        assertContains(ex.getMessage(), "You can adjust this limit via 
ZipSecureFile.setMinInflateRatio()");
     }
 
     @Test
@@ -831,7 +832,7 @@ public final class TestPackage {
                 ZipSecureFile.setMaxEntrySize(max_size-200);
             })
         );
-        assertTrue(ex.getMessage().contains("You can adjust this limit via 
ZipSecureFile.setMaxEntrySize()"));
+        assertContains(ex.getMessage(), "You can adjust this limit via 
ZipSecureFile.setMaxEntrySize()");
     }
 
     private void getZipStatsAndConsume(BiConsumer<Long,Double> ratioCon) 
throws IOException {
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java 
b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java
index 8096fd3a8c..b6e45d4c41 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/openxml4j/opc/TestStreamHelper.java
@@ -35,8 +35,8 @@ import org.w3c.dom.Element;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.xssf.usermodel.XSSFRelation.NS_WORDPROCESSINGML;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 class TestStreamHelper {
     @Test
@@ -57,8 +57,8 @@ class TestStreamHelper {
         try (UnsynchronizedByteArrayOutputStream bos = 
UnsynchronizedByteArrayOutputStream.builder().get()) {
             StreamHelper.saveXmlInStream(doc, bos);
             String xml = bos.toString(StandardCharsets.UTF_8);
-            assertTrue(xml.contains("standalone=\"yes\""), "xml contains 
standalone=yes?");
-            assertTrue(xml.contains("encoding=\"UTF-8\""), "xml contains 
encoding=UTF-8?");
+            assertContains(xml, "standalone=\"yes\"");
+            assertContains(xml, "encoding=\"UTF-8\"");
         }
     }
 
@@ -84,7 +84,7 @@ class TestStreamHelper {
                             IOUtils.toByteArray(zis, entrySize, maxSize);
                     final String str = new String(data, 
StandardCharsets.UTF_8);
                     if (str.contains("standalone")) {
-                        assertTrue(str.contains("standalone=\"yes\""), 
"unexpected XML standalone flag in " + entry.getName());
+                        assertContains(str, "standalone=\"yes\"");
                     }
                 }
             }
@@ -113,7 +113,7 @@ class TestStreamHelper {
                             IOUtils.toByteArray(zis, entrySize, maxSize);
                     final String str = new String(data, 
StandardCharsets.UTF_8);
                     if (str.contains("standalone")) {
-                        assertTrue(str.contains("standalone=\"yes\""), 
"unexpected XML standalone flag in " + entry.getName());
+                        assertContains(str, "standalone=\"yes\"");
                     }
                 }
             }
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestSecureTempZip.java
 
b/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestSecureTempZip.java
index 90e4b018fe..fdebd2793a 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestSecureTempZip.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/tests/TestSecureTempZip.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.poifs.crypt.tests;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -147,8 +148,7 @@ class TestSecureTempZip {
                     // no-op
                 }
             });
-            
assertTrue(exception.getMessage().contains("ZipSecureFile.setMinInflateRatio()"),
-                    "unexpected exception message: " + exception.getMessage());
+            assertContains(exception.getMessage(), 
"ZipSecureFile.setMinInflateRatio()");
         } finally {
             ZipSecureFile.setMinInflateRatio(defaultRatio);
             ZipSecureFile.setGraceEntrySize(defaultGrace);
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
 
b/poi-ooxml/src/test/java/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
index 26c37cc153..4fdb80488d 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
@@ -17,7 +17,7 @@
 package org.apache.poi.xslf.extractor;
 
 import static org.apache.poi.POITestCase.assertContains;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.apache.poi.POITestCase.assertStartsWith;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -29,6 +29,7 @@ import java.io.IOException;
 import java.io.InputStream;
 
 import org.apache.poi.POIDataSamples;
+import org.apache.poi.POITestCase;
 import org.apache.poi.extractor.ExtractorFactory;
 import org.apache.poi.sl.extractor.SlideShowExtractor;
 import org.apache.poi.xslf.usermodel.XMLSlideShow;
@@ -282,18 +283,18 @@ class TestXSLFPowerPointExtractor {
         //noinspection rawtypes
         try (SlideShowExtractor extr = 
(SlideShowExtractor)ExtractorFactory.createExtractor(footerFile)) {
             String text = extr.getText();
-            assertNotContained(text, "testdoc");
+            POITestCase.assertNotContains(text, "testdoc");
 
             extr.setSlidesByDefault(false);
             extr.setNotesByDefault(true);
             text = extr.getText();
-            assertNotContained(text, "testdoc");
+            POITestCase.assertNotContains(text, "testdoc");
 
             extr.setSlidesByDefault(false);
             extr.setNotesByDefault(false);
             extr.setMasterByDefault(true);
             text = extr.getText();
-            assertNotContained(text, "testdoc");
+            POITestCase.assertNotContains(text, "testdoc");
         }
     }
 
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFSlideShowFactory.java
 
b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFSlideShowFactory.java
index 4d29222d9a..85a35b0b79 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFSlideShowFactory.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFSlideShowFactory.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xslf.usermodel;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -59,7 +60,7 @@ public final class TestXSLFSlideShowFactory extends 
BaseTestSlideShowFactory {
         // In the meantime, this function will modify SampleShow.pptx on disk.
         AssertionError ex = assertThrows(AssertionError.class, () -> 
testFactoryFromFile(filename),
             "Bug 58779: " + removeExpectedExceptionMsg);
-        assertTrue(ex.getMessage().contains("SampleShow.pptx sample file was 
modified as a result of closing the slideshow"));
+        assertContains(ex.getMessage(), "SampleShow.pptx sample file was 
modified as a result of closing the slideshow");
     }
 
     @Test
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFFileChecks.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFFileChecks.java
index 2fc978bd35..661a418096 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFFileChecks.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/TestXSSFFileChecks.java
@@ -27,8 +27,8 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
 class TestXSSFFileChecks {
@@ -40,8 +40,7 @@ class TestXSSFFileChecks {
             XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
             fail("expected IOException");
         } catch (IOException e) {
-            
assertTrue(e.getMessage().contains("ZipSecureFile.setMaxFileCount()"),
-                    "unexpected exception message: " + e.getMessage());
+            assertContains(e.getMessage(), "ZipSecureFile.setMaxFileCount()");
         } finally {
             ZipSecureFile.setMaxFileCount(defaultLimit);
         }
@@ -56,8 +55,7 @@ class TestXSSFFileChecks {
             XSSFWorkbook xssfWorkbook = new XSSFWorkbook(file);
             fail("expected InvalidFormatException");
         } catch (InvalidFormatException e) {
-            
assertTrue(e.getMessage().contains("ZipSecureFile.setMaxFileCount()"),
-                    "unexpected exception message: " + e.getMessage());
+            assertContains(e.getMessage(), "ZipSecureFile.setMaxFileCount()");
         } finally {
             ZipSecureFile.setMaxFileCount(defaultLimit);
         }
@@ -89,8 +87,7 @@ class TestXSSFFileChecks {
             XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
             fail("expected IOException");
         } catch (IOException e) {
-            
assertTrue(e.getMessage().contains("ZipSecureFile.setMinInflateRatio()"),
-                    "unexpected exception message: " + e.getMessage());
+            assertContains(e.getMessage(), 
"ZipSecureFile.setMinInflateRatio()");
         } finally {
             ZipSecureFile.setMinInflateRatio(defaultInflateRatio);
             ZipSecureFile.setGraceEntrySize(defaultGraceSize);
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
index 6309c95888..9de5693383 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
@@ -18,7 +18,7 @@
 package org.apache.poi.xssf.eventusermodel;
 
 import static org.apache.poi.POITestCase.assertContains;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.junit.jupiter.api.Assertions.*;
 
 import java.io.IOException;
@@ -322,7 +322,7 @@ public final class TestXSSFReader {
             while (iter.hasNext()) {
                 InputStream stream = iter.next();
                 String sheetName = iter.getSheetName();
-                assertNotContained(seen, sheetName);
+                assertNotContains(seen, sheetName);
                 seen.add(sheetName);
                 stream.close();
             }
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java
 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java
index f6d497082d..abcb3cc955 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java
@@ -19,7 +19,7 @@ package org.apache.poi.xssf.extractor;
 
 import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.POITestCase.assertEndsWith;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.apache.poi.POITestCase.assertStartsWith;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -31,6 +31,7 @@ import java.util.Map.Entry;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.poi.POITestCase;
 import org.apache.poi.extractor.POITextExtractor;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.extractor.ExcelExtractor;
@@ -185,8 +186,8 @@ class TestXSSFExcelExtractor {
         String text = extractor.getText();
 
         // No comments there yet
-        assertNotContained(text, "testdoc");
-        assertNotContained(text, "test phrase");
+        POITestCase.assertNotContains(text, "testdoc");
+        POITestCase.assertNotContains(text, "test phrase");
 
         // Turn on comment extraction, will then be
         extractor.setIncludeCellComments(true);
@@ -243,7 +244,7 @@ class TestXSSFExcelExtractor {
             assertContains(text, "\u8C4A\u7530");
             //this shows up only as a phonetic run and should not appear
             //in the extracted text
-            assertNotContained(text, "\u30CB\u30DB\u30F3");
+            POITestCase.assertNotContains(text, "\u30CB\u30DB\u30F3");
         }
     }
 
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestOutlining.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestOutlining.java
index b8a15b8ea0..1cc714c016 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestOutlining.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/streaming/TestOutlining.java
@@ -19,6 +19,7 @@
 
 package org.apache.poi.xssf.streaming;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
@@ -77,16 +78,16 @@ public final class TestOutlining {
 
         IllegalArgumentException e;
         e = assertThrows(IllegalArgumentException.class, () -> 
sheet2.setRowGroupCollapsed(3, true));
-        assertTrue(e.getMessage().contains("row (3)"));
+        assertContains(e.getMessage(), "row (3)");
 
         e = assertThrows(IllegalArgumentException.class, () -> 
sheet2.setRowGroupCollapsed(10, true));
-        assertTrue(e.getMessage().contains("row (10)"));
+        assertContains(e.getMessage(), "row (10)");
 
         e = assertThrows(IllegalArgumentException.class, () -> 
sheet2.setRowGroupCollapsed(0, true));
-        assertTrue(e.getMessage().contains("row (0)"));
+        assertContains(e.getMessage(), "row (0)");
 
         e = assertThrows(IllegalArgumentException.class, () -> 
sheet2.setRowGroupCollapsed(20, true));
-        assertTrue(e.getMessage().contains("Row does not exist"), "Had: " + 
e.getMessage());
+        assertContains(e.getMessage(), "Row does not exist");
 
         SXSSFRow r = sheet2.getRow(8);
         assertNotNull(r);
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java
index 58c84f718c..245c16d046 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestFormulaEval.java
@@ -27,8 +27,8 @@ import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
 class TestFormulaEval {
@@ -87,12 +87,9 @@ class TestFormulaEval {
                 formulaEvaluator.evaluateAll();
                 fail("Should catch exception here");
             } catch (IllegalStateException e) {
-                assertTrue(e.getMessage().contains("test-sheet"),
-                        "Had: " + e.getMessage());
-                assertTrue(e.getMessage().contains("Sheet123"),
-                        "Had: " + e.getMessage());
-                assertTrue(e.getMessage().contains("R6C13"),
-                        "Had: " + e.getMessage());
+                assertContains(e.getMessage(), "test-sheet");
+                assertContains(e.getMessage(), "Sheet123");
+                assertContains(e.getMessage(), "R6C13");
             }
         }
     }
@@ -112,14 +109,10 @@ class TestFormulaEval {
                 formulaEvaluator.evaluateAll();
                 fail("Should catch exception here");
             } catch (IllegalStateException e) {
-                assertTrue(e.getMessage().contains("test-sheet"),
-                        "Had: " + e.getMessage());
-                assertTrue(e.getMessage().contains("Sheet123"),
-                        "Had: " + e.getMessage());
-                assertTrue(e.getMessage().contains("R6C13"),
-                        "Had: " + e.getMessage());
-                assertTrue(e.getMessage().contains("SUM"),
-                        "Had: " + e.getMessage());
+                assertContains(e.getMessage(), "test-sheet");
+                assertContains(e.getMessage(), "Sheet123");
+                assertContains(e.getMessage(), "R6C13");
+                assertContains(e.getMessage(), "SUM");
             }
         }
     }
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
index f049a1023f..d96a98fc9f 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
@@ -20,6 +20,7 @@ package org.apache.poi.xssf.usermodel;
 import static java.time.Duration.between;
 import static java.time.Instant.now;
 import static org.apache.logging.log4j.util.Unbox.box;
+import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.extractor.ExtractorFactory.OOXML_PACKAGE;
 import static org.apache.poi.openxml4j.opc.TestContentType.isOldXercesActive;
 import static org.apache.poi.ss.util.Utils.addRow;
@@ -2503,7 +2504,7 @@ public final class TestXSSFBugs extends 
BaseTestBugzillaIssues {
                 if (cell.getCellType() == CellType.FORMULA) {
                     String formula = cell.getCellFormula();
                     assertNotNull(formula);
-                    assertTrue(formula.contains("WORKDAY"));
+                    assertContains(formula, "WORKDAY");
                 } else {
                     assertNotNull(cell.toString());
                 }
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
index ec00e27441..46a44a3d45 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java
@@ -16,14 +16,9 @@
 ==================================================================== */
 package org.apache.poi.xssf.usermodel;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.xssf.usermodel.XSSFRelation.NS_DRAWINGML;
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNotSame;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 import java.awt.Color;
 import java.io.IOException;
@@ -158,14 +153,14 @@ class TestXSSFDrawing {
 
         shapes = dr1.getShapes();
         assertEquals(4, shapes.size());
-        assertTrue(shapes.get(0) instanceof XSSFConnector);
-        assertTrue(shapes.get(1) instanceof XSSFShapeGroup);
-        assertTrue(shapes.get(2) instanceof XSSFSimpleShape);
-        assertTrue(shapes.get(3) instanceof XSSFSimpleShape); //
+        assertInstanceOf(XSSFConnector.class, shapes.get(0));
+        assertInstanceOf(XSSFShapeGroup.class, shapes.get(1));
+        assertInstanceOf(XSSFSimpleShape.class, shapes.get(2));
+        assertInstanceOf(XSSFSimpleShape.class, shapes.get(3)); //
 
         // Ensure it got the right namespaces
         String xml = ctDrawing.toString();
-        
assertTrue(xml.contains("xmlns:xdr=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\"";));
+        assertContains(xml, 
"xmlns:xdr=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\"";);
         assertTrue(xml.contains("xmlns:a=\"" + NS_DRAWINGML + '\"'));
 
         checkRewrite(wb2);
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFOptimiser.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFOptimiser.java
index 8587cffbe3..4fd00ca47b 100755
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFOptimiser.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFOptimiser.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xssf.usermodel;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.*;
 
 import java.io.ByteArrayInputStream;
@@ -171,8 +172,7 @@ class TestXSSFOptimiser {
             assertTrue(font2.getItalic(), "Cell 2 should still be italic");
 
             String numFormat = cell3.getCellStyle().getDataFormatString();
-            assertTrue(numFormat.contains("#,##0"),
-                "Cell 3 should still have number format, got: " + numFormat);
+            assertContains(numFormat, "#,##0");
         }
     }
 
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
index 9a0215e1b0..1100e68a12 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xssf.usermodel;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -142,13 +143,13 @@ public final class TestXSSFRichTextString {
         rt.applyFont(0, 0, (short)1);
         IllegalArgumentException e;
         e = assertThrows(IllegalArgumentException.class, () -> 
rt.applyFont(11, 10, (short)1));
-        assertTrue(e.getMessage().contains("11"));
+        assertContains(e.getMessage(), "11");
 
         e = assertThrows(IllegalArgumentException.class, () -> 
rt.applyFont(-1, 10, (short)1));
-        assertTrue(e.getMessage().contains("-1"));
+        assertContains(e.getMessage(), "-1");
 
         e = assertThrows(IllegalArgumentException.class, () -> rt.applyFont(0, 
555, (short)1));
-        assertTrue(e.getMessage().contains("555"));
+        assertContains(e.getMessage(), "555");
     }
 
     @Test
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTextRun.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTextRun.java
index fae3f42274..91ce4e25af 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTextRun.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTextRun.java
@@ -16,6 +16,7 @@
 ==================================================================== */
 package org.apache.poi.xssf.usermodel;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.*;
 
 import java.awt.Color;
@@ -65,7 +66,7 @@ class TestXSSFTextRun {
             run.setFontSize(-1.0);
             assertEquals(11.0, run.getFontSize(), 0.01);
             IllegalArgumentException e = 
assertThrows(IllegalArgumentException.class, () -> run.setFontSize(0.9));
-            assertTrue(e.getMessage().contains("0.9"));
+            assertContains(e.getMessage(), "0.9");
             assertEquals(11.0, run.getFontSize(), 0.01);
 
             assertEquals(0.0, run.getCharacterSpacing(), 0.01);
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java
index 956041f2fb..75fd8c4d98 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java
@@ -16,6 +16,7 @@
 ==================================================================== */
 package org.apache.poi.xssf.usermodel;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;
 import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
 import static org.apache.poi.xssf.usermodel.XSSFVMLDrawing.QNAME_VMLDRAWING;
@@ -221,7 +222,7 @@ class TestXSSFVMLDrawing {
             assertNotNull(workbook);
         } catch (POIXMLException e) {
             // XML parser of IBM JDK is a bit more picky on XML in this file, 
so we expect it to fail there with this error
-            assertTrue(e.getMessage().contains("Attribute name \"sheetId\" 
associated with an element type \"sheet\" must be followed by the ' = ' 
character."));
+            assertContains(e.getMessage(), "Attribute name \"sheetId\" 
associated with an element type \"sheet\" must be followed by the ' = ' 
character.");
         }
     }
 }
\ No newline at end of file
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
index 6a16227335..7174247a50 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
@@ -92,6 +92,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.zip.CRC32;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleFileStream;
 import static org.apache.poi.xssf.XSSFTestDataSamples.getSampleFile;
 import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
@@ -1241,7 +1242,7 @@ public final class TestXSSFWorkbook extends 
BaseTestXWorkbook {
             expectFormattedContent(A4, " עִבְרִית and اَلْعَرَبِيَّةُ");
 
             Comment a3Comment = sheet.getCellComment(new CellAddress("A3"));
-            assertTrue(a3Comment.getString().getString().contains("تعليق 
الاختبا"));
+            assertContains(a3Comment.getString().getString(), "تعليق الاختبا");
         }
     }
 
diff --git a/poi-ooxml/src/test/java/org/apache/poi/xwpf/TestXWPFBugs.java 
b/poi-ooxml/src/test/java/org/apache/poi/xwpf/TestXWPFBugs.java
index 5611064220..5ee20780fa 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xwpf/TestXWPFBugs.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xwpf/TestXWPFBugs.java
@@ -16,6 +16,7 @@
 ==================================================================== */
 package org.apache.poi.xwpf;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
@@ -286,11 +287,10 @@ class TestXWPFBugs {
             fail("Should catch exception");
         } catch (POIXMLException e) {
             // JDK 25+ does more checks, so more than one exception are 
possible
-            assertTrue(e.getMessage().contains("The element \"w:t\" has a 
depth"),
-                    "Had: " + e);
+            assertContains(e.getMessage(), "The element \"w:t\" has a depth");
         } catch (IOException e) {
             assertInstanceOf(POIException.class, e.getCause());
-            assertTrue(e.getMessage().contains("Node depth exceeds maximum 
supported depth"));
+            assertContains(e.getMessage(), "Node depth exceeds maximum 
supported depth");
         }
     }
 }
diff --git 
a/poi-ooxml/src/test/java/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java
 
b/poi-ooxml/src/test/java/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java
index 90f4c817a5..ac6b5bf4ec 100644
--- 
a/poi-ooxml/src/test/java/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java
+++ 
b/poi-ooxml/src/test/java/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java
@@ -19,7 +19,7 @@ package org.apache.poi.xwpf.extractor;
 
 import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.POITestCase.assertEndsWith;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.apache.poi.POITestCase.assertStartsWith;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -33,6 +33,7 @@ import java.util.Locale;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.poi.POITestCase;
 import org.apache.poi.util.StringUtil;
 import org.apache.poi.xssf.usermodel.XSSFRelation;
 import org.apache.poi.xwpf.XWPFTestDataSamples;
@@ -459,7 +460,7 @@ class TestXWPFWordExtractor {
             assertContains(txt, "Getting the perfect");
             //this content appears only in the glossary document
             //once we add processing for this, we can change this to contains
-            assertNotContained(txt, "table rows");
+            POITestCase.assertNotContains(txt, "table rows");
         }
     }
 
diff --git a/poi-scratchpad/src/test/java/org/apache/poi/hmef/TestBugs.java 
b/poi-scratchpad/src/test/java/org/apache/poi/hmef/TestBugs.java
index 704c85ef97..c35e677185 100644
--- a/poi-scratchpad/src/test/java/org/apache/poi/hmef/TestBugs.java
+++ b/poi-scratchpad/src/test/java/org/apache/poi/hmef/TestBugs.java
@@ -16,10 +16,10 @@
 ==================================================================== */
 package org.apache.poi.hmef;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.hmef.TestHMEFMessage.openSample;
 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.io.IOException;
 import java.util.List;
@@ -38,7 +38,7 @@ public class TestBugs {
         MAPIAttribute bodyHtml = 
tnefDat.getMessageMAPIAttribute(MAPIProperty.BODY_HTML);
         assertNotNull(bodyHtml);
         String bodyStr = new String(bodyHtml.getData(), getEncoding(tnefDat));
-        assertTrue(bodyStr.contains("This is the message body."));
+        assertContains(bodyStr, "This is the message body.");
     }
 
     @Test
@@ -47,7 +47,7 @@ public class TestBugs {
         MAPIAttribute bodyHtml = 
tnefDat.getMessageMAPIAttribute(MAPIProperty.BODY_HTML);
         assertNotNull(bodyHtml);
         String bodyStr = new String(bodyHtml.getData(), getEncoding(tnefDat));
-        assertTrue(bodyStr.contains("There are also two attachments."));
+        assertContains(bodyStr, "There are also two attachments.");
         assertEquals(2, tnefDat.getAttachments().size());
     }
 
diff --git 
a/poi-scratchpad/src/test/java/org/apache/poi/hslf/extractor/TestExtractor.java 
b/poi-scratchpad/src/test/java/org/apache/poi/hslf/extractor/TestExtractor.java
index 2120e65498..b21ef513c7 100644
--- 
a/poi-scratchpad/src/test/java/org/apache/poi/hslf/extractor/TestExtractor.java
+++ 
b/poi-scratchpad/src/test/java/org/apache/poi/hslf/extractor/TestExtractor.java
@@ -19,7 +19,7 @@ package org.apache.poi.hslf.extractor;
 
 import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.POITestCase.assertContainsIgnoreCase;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -35,6 +35,7 @@ import java.util.List;
 import com.zaxxer.sparsebits.SparseBitSet;
 
 import org.apache.poi.POIDataSamples;
+import org.apache.poi.POITestCase;
 import org.apache.poi.hslf.usermodel.HSLFObjectShape;
 import org.apache.poi.hslf.usermodel.HSLFSlideShow;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -322,7 +323,7 @@ public final class TestExtractor {
 
             String text = ppe.getText();
             assertContains(text, masterRandomText);
-            assertNotContained(text, masterTitleText);
+            POITestCase.assertNotContains(text, masterTitleText);
 
             //make sure that the footer only appears once
             int masterFooters = 0;
@@ -340,7 +341,7 @@ public final class TestExtractor {
         try (final SlideShowExtractor<?,?> ppe = 
openExtractor("bug62591.ppt")) {
             ppe.setMasterByDefault(true);
             String text = ppe.getText();
-            assertNotContained(text, "Titelmasterformat");
+            POITestCase.assertNotContains(text, "Titelmasterformat");
         }
     }
 
@@ -357,7 +358,7 @@ public final class TestExtractor {
             assertContains(text, "Text that I added to the master slide");
 
             // Make sure placeholder text does not come out
-            assertNotContained(text, "Click to edit Master");
+            POITestCase.assertNotContains(text, "Click to edit Master");
         }
 
         // Now with another file only containing master text
diff --git a/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestBasics.java 
b/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestBasics.java
index 49dea29aff..95185d39b7 100644
--- a/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestBasics.java
+++ b/poi-scratchpad/src/test/java/org/apache/poi/hsmf/TestBasics.java
@@ -247,7 +247,7 @@ public final class TestBasics {
       assertThrows(ChunkNotFoundException.class, chinese::getHeaders, "File 
doesn't have headers!");
 
       String html = chinese.getHtmlBody();
-      assertTrue(html.contains("text/html; charset=big5"), "Charset not 
found:\n" + html);
+      assertContains(html, "text/html; charset=big5");
 
       // Defaults to CP1251
       assertEquals("CP1252", 
chinese.getRecipientDetailsChunks()[0].getRecipientDisplayNameChunk().get7BitEncoding());
diff --git 
a/poi-scratchpad/src/test/java/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java
 
b/poi-scratchpad/src/test/java/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java
index bb3c4b3cd0..b90cf7cb00 100644
--- 
a/poi-scratchpad/src/test/java/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java
+++ 
b/poi-scratchpad/src/test/java/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java
@@ -18,7 +18,7 @@
 package org.apache.poi.hsmf.extractor;
 
 import static org.apache.poi.POITestCase.assertContains;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.FileInputStream;
@@ -28,6 +28,7 @@ import java.util.Locale;
 import java.util.TimeZone;
 
 import org.apache.poi.POIDataSamples;
+import org.apache.poi.POITestCase;
 import org.apache.poi.hsmf.MAPIMessage;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.LocaleUtil;
@@ -63,9 +64,9 @@ public final class TestOutlookTextExtractor {
 
             assertContains(text, "From: Kevin Roast\n");
             assertContains(text, "To: Kevin Roast 
<[email protected]>\n");
-            assertNotContained(text, "CC:");
-            assertNotContained(text, "BCC:");
-            assertNotContained(text, "Attachment:");
+            POITestCase.assertNotContains(text, "CC:");
+            POITestCase.assertNotContains(text, "BCC:");
+            POITestCase.assertNotContains(text, "Attachment:");
             assertContains(text, "Subject: Test the content transformer\n");
             Calendar cal = LocaleUtil.getLocaleCalendar(2007, 5, 14, 9, 42, 
55);
             SimpleDateFormat f = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss 
Z", Locale.ROOT);
@@ -85,8 +86,8 @@ public final class TestOutlookTextExtractor {
 
             assertContains(text, "From: Travis Ferguson\n");
             assertContains(text, "To: [email protected]\n");
-            assertNotContained(text, "CC:");
-            assertNotContained(text, "BCC:");
+            POITestCase.assertNotContains(text, "CC:");
+            POITestCase.assertNotContains(text, "BCC:");
             assertContains(text, "Subject: test message\n");
             assertContains(text, "Date: Fri, 6 Jul 2007 05:27:17 +0000\n");
             assertContains(text, "This is a test message.");
@@ -182,7 +183,7 @@ public final class TestOutlookTextExtractor {
                         "'Paul Holmes-Higgin' <[email protected]>; 'Mike 
Farman' <[email protected]>\n");
                 assertContains(text, "CC: [email protected]; " +
                         "[email protected]; 'Roy Wetherall' 
<[email protected]>\n");
-                assertNotContained(text, "BCC:");
+                POITestCase.assertNotContains(text, "BCC:");
                 assertContains(text, "Subject: This is a test message please 
ignore\n");
                 assertContains(text, "Date: Mon, 11 Jan 2010 16:2"); // Exact 
times differ slightly
                 assertContains(text, "The quick brown fox jumps over the lazy 
dog");
@@ -205,8 +206,8 @@ public final class TestOutlookTextExtractor {
 
             assertContains(text, "From: Nicolas1");
             assertContains(text, "To: '[email protected]'");
-            assertNotContained(text, "CC:");
-            assertNotContained(text, "BCC:");
+            POITestCase.assertNotContains(text, "CC:");
+            POITestCase.assertNotContains(text, "BCC:");
             assertContains(text, "Subject: test");
             assertContains(text, "Date: Wed, 22 Apr");
             assertContains(text, "Attachment: test-unicode.doc\n");
@@ -230,8 +231,8 @@ public final class TestOutlookTextExtractor {
             assertContains(text, "ante in lacinia euismod");
 
             // But not the attached message
-            assertNotContained(text, "Test mail attachment");
-            assertNotContained(text, "Lorem ipsum dolor sit");
+            POITestCase.assertNotContains(text, "Test mail attachment");
+            POITestCase.assertNotContains(text, "Lorem ipsum dolor sit");
         }
     }
 
diff --git 
a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java
 
b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java
index fb43f3b56c..6128e842ae 100644
--- 
a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java
+++ 
b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java
@@ -17,7 +17,7 @@
 package org.apache.poi.hwpf.converter;
 
 import static org.apache.poi.POITestCase.assertContains;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.StringWriter;
@@ -28,6 +28,7 @@ import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.apache.poi.POIDataSamples;
+import org.apache.poi.POITestCase;
 import org.apache.poi.hwpf.HWPFDocument;
 import org.apache.poi.util.XMLHelper;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -109,7 +110,7 @@ public class TestWordToHtmlConverter {
 
         for (String match : contains.split("\\|")) {
             if (match.startsWith("!")) {
-                assertNotContained(result, match.substring(1));
+                POITestCase.assertNotContains(result, match.substring(1));
             } else {
                 assertContains(result, match);
             }
diff --git 
a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/converter/TestWordToTextConverter.java
 
b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/converter/TestWordToTextConverter.java
index c2bd0582ba..217f4684c5 100644
--- 
a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/converter/TestWordToTextConverter.java
+++ 
b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/converter/TestWordToTextConverter.java
@@ -16,9 +16,9 @@
 ==================================================================== */
 package org.apache.poi.hwpf.converter;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -67,7 +67,7 @@ public class TestWordToTextConverter {
         try (HWPFDocument doc = openSampleFile( "Bug47731.doc" )) {
             String foundText = WordToTextConverter.getText(doc);
 
-            assertTrue(foundText.contains("Soak the rice in water for three to 
four hours"));
+            assertContains(foundText, "Soak the rice in water for three to 
four hours");
         }
     }
 
@@ -76,14 +76,14 @@ public class TestWordToTextConverter {
         try (HWPFDocument doc = openSampleFile( "Bug52311.doc" )) {
             String result = WordToTextConverter.getText(doc);
 
-            assertTrue(result.contains("2.1\tHeader 2.1"));
-            assertTrue(result.contains("2.2\tHeader 2.2"));
-            assertTrue(result.contains("2.3\tHeader 2.3"));
-            assertTrue(result.contains("2.3.1\tHeader 2.3.1"));
-            assertTrue(result.contains("2.99\tHeader 2.99"));
-            assertTrue(result.contains("2.99.1\tHeader 2.99.1"));
-            assertTrue(result.contains("2.100\tHeader 2.100"));
-            assertTrue(result.contains("2.101\tHeader 2.101"));
+            assertContains(result, "2.1\tHeader 2.1");
+            assertContains(result, "2.2\tHeader 2.2");
+            assertContains(result, "2.3\tHeader 2.3");
+            assertContains(result, "2.3.1\tHeader 2.3.1");
+            assertContains(result, "2.99\tHeader 2.99");
+            assertContains(result, "2.99.1\tHeader 2.99.1");
+            assertContains(result, "2.100\tHeader 2.100");
+            assertContains(result, "2.101\tHeader 2.101");
         }
     }
 
diff --git 
a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/usermodel/TestBugs.java 
b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/usermodel/TestBugs.java
index e2e6ce89de..8f3260761d 100644
--- a/poi-scratchpad/src/test/java/org/apache/poi/hwpf/usermodel/TestBugs.java
+++ b/poi-scratchpad/src/test/java/org/apache/poi/hwpf/usermodel/TestBugs.java
@@ -18,7 +18,7 @@ package org.apache.poi.hwpf.usermodel;
 
 import static org.apache.poi.POIDataSamples.getDocumentInstance;
 import static org.apache.poi.POITestCase.assertContains;
-import static org.apache.poi.POITestCase.assertNotContained;
+import static org.apache.poi.POITestCase.assertNotContains;
 import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -37,6 +37,7 @@ import java.util.Collection;
 import java.util.List;
 
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.poi.POITestCase;
 import org.apache.poi.extractor.ExtractorFactory;
 import org.apache.poi.extractor.POITextExtractor;
 import org.apache.poi.hwpf.HWPFDocument;
@@ -374,8 +375,8 @@ class TestBugs {
             assertContains(docText, "1-1");
             assertContains(docText, "1-12");
 
-            assertNotContained(docText, "1-13");
-            assertNotContained(docText, "1-15");
+            POITestCase.assertNotContains(docText, "1-13");
+            POITestCase.assertNotContains(docText, "1-15");
         }
     }
 
diff --git a/poi/src/test/java/org/apache/poi/POITestCase.java 
b/poi/src/test/java/org/apache/poi/POITestCase.java
index 429ec65705..4de99bfbf3 100644
--- a/poi/src/test/java/org/apache/poi/POITestCase.java
+++ b/poi/src/test/java/org/apache/poi/POITestCase.java
@@ -51,38 +51,38 @@ public final class POITestCase {
     }
 
     public static void assertStartsWith(String string, String prefix) {
-        assertNotNull(string);
-        assertNotNull(prefix);
+        assertNotNull(string, "expected non-null value for 'string'");
+        assertNotNull(prefix, "expected non-null value for 'prefix'");
         assertThat(string, startsWith(prefix));
     }
 
     public static void assertStartsWith(String message, String string, String 
prefix) {
-        assertNotNull(message, string);
-        assertNotNull(message, prefix);
+        assertNotNull(string, "expected non-null value for 'string'");
+        assertNotNull(prefix, "expected non-null value for 'prefix'");
         assertThat(message, string, startsWith(prefix));
     }
 
     public static void assertEndsWith(String string, String suffix) {
-        assertNotNull(string);
-        assertNotNull(suffix);
+        assertNotNull(string, "expected non-null value for 'string'");
+        assertNotNull(suffix, "expected non-null value for 'suffix'");
         assertThat(string, endsWith(suffix));
     }
 
     public static void assertContains(String haystack, String needle) {
-        assertNotNull(haystack);
-        assertNotNull(needle);
+        assertNotNull(haystack, "expected non-null value for 'haystack'");
+        assertNotNull(needle, "expected non-null value for 'needle'");
         assertThat(haystack, containsString(needle));
     }
 
     public static void assertContains(String message, String haystack, String 
needle) {
-        assertNotNull(message, haystack);
-        assertNotNull(message, needle);
+        assertNotNull(haystack, "expected non-null value for 'haystack'");
+        assertNotNull(needle, "expected non-null value for 'needle'");
         assertThat(message, haystack, containsString(needle));
     }
 
     public static void assertContainsIgnoreCase(String haystack, String 
needle, Locale locale) {
-        assertNotNull(haystack);
-        assertNotNull(needle);
+        assertNotNull(haystack, "expected non-null value for 'haystack'");
+        assertNotNull(needle, "expected non-null value for 'needle'");
         String hay = haystack.toLowerCase(locale);
         String n = needle.toLowerCase(locale);
         assertTrue(hay.contains(n), "Unable to find expected text '" + needle 
+ "' in text:\n" + haystack);
@@ -91,9 +91,9 @@ public final class POITestCase {
         assertContainsIgnoreCase(haystack, needle, Locale.ROOT);
     }
 
-    public static void assertNotContained(String haystack, String needle) {
-        assertNotNull(haystack);
-        assertNotNull(needle);
+    public static void assertNotContains(String haystack, String needle) {
+        assertNotNull(haystack, "expected non-null value for 'haystack'");
+        assertNotNull(needle, "expected non-null value for 'needle'");
         assertThat(haystack, not(containsString(needle)));
     }
 
@@ -101,11 +101,11 @@ public final class POITestCase {
      * @param map haystack
      * @param key needle
      */
-    public static  <T> void assertContains(Map<T, ?> map, T key) {
+    public static <T> void assertContains(Map<T, ?> map, T key) {
         assertTrue(map.containsKey(key), "Unable to find " + key + " in " + 
map);
     }
 
-    public static <T> void assertNotContained(Set<T> set, T element) {
+    public static <T> void assertNotContains(Set<T> set, T element) {
         assertThat("Set should not contain " + element, set, 
not(hasItem(element)));
     }
 
diff --git a/poi/src/test/java/org/apache/poi/TestPOITestCase.java 
b/poi/src/test/java/org/apache/poi/TestPOITestCase.java
index 862d0d7e46..fec176b886 100644
--- a/poi/src/test/java/org/apache/poi/TestPOITestCase.java
+++ b/poi/src/test/java/org/apache/poi/TestPOITestCase.java
@@ -63,7 +63,7 @@ final class TestPOITestCase {
 
     @Test
     void assertNotContained() {
-        POITestCase.assertNotContained("There is a needle in this haystack", 
"gold");
+        POITestCase.assertNotContains("There is a needle in this haystack", 
"gold");
     }
 
     @Test
diff --git 
a/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java 
b/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java
index 91c7a36513..254f348270 100644
--- a/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java
+++ b/poi/src/test/java/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java
@@ -333,7 +333,7 @@ final class TestOldExcelExtractor {
             System.setOut(str);
             OldExcelExtractor.main(new String[] {file.getAbsolutePath()});
             String string = out.toString(StandardCharsets.UTF_8);
-            assertTrue(string.contains("Table C-13--Lemons"), "Had: " + 
string);
+            assertContains(string, "Table C-13--Lemons");
         } finally {
             System.setOut(save);
         }
diff --git 
a/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactoryInputStream.java
 
b/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactoryInputStream.java
index a076f6dc46..987137a553 100644
--- 
a/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactoryInputStream.java
+++ 
b/poi/src/test/java/org/apache/poi/hssf/record/TestRecordFactoryInputStream.java
@@ -17,10 +17,10 @@
 
 package org.apache.poi.hssf.record;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
 
@@ -74,7 +74,7 @@ final class TestRecordFactoryInputStream {
             EncryptedDocumentException.class,
             () -> createRFIS(dataWrongDefault)
         );
-        assertTrue(ex.getMessage().contains("Default password is invalid for 
salt/verifier/verifierHash"));
+        assertContains(ex.getMessage(), "Default password is invalid for 
salt/verifier/verifierHash");
     }
 
     @Test
diff --git 
a/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFDataFormatter.java 
b/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFDataFormatter.java
index 7020dbf1ed..f211aeaeb6 100644
--- a/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFDataFormatter.java
+++ b/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFDataFormatter.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.hssf.usermodel;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -275,8 +276,7 @@ public final class TestHSSFDataFormatter {
             assertNotEquals("555.47431", fmtval);
 
             // check we found the time properly
-            assertTrue(fmtval.contains("11:23"),
-                "Format came out incorrect - " + fmt + " - found " + fmtval + 
", but expected to find '11:23'");
+            assertContains(fmtval, "11:23");
         }
 
         // test number formats
diff --git 
a/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java 
b/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
index 2b9452ccf4..f368b76ddf 100644
--- a/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
+++ b/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
@@ -843,7 +843,7 @@ public final class TestHSSFWorkbook extends 
BaseTestWorkbook {
         HSSFWorkbook wb=new HSSFWorkbook();
 
         IllegalStateException ex1 = assertThrows(IllegalStateException.class, 
() -> wb.getNameAt(0));
-        assertTrue(ex1.getMessage().contains("no defined names"));
+        assertContains(ex1.getMessage(), "no defined names");
 
         HSSFName name = wb.createName();
         assertNotNull(name);
@@ -857,10 +857,10 @@ public final class TestHSSFWorkbook extends 
BaseTestWorkbook {
         assertEquals(0, wb.getNameIndex("myname"));
 
         IllegalArgumentException ex2 = 
assertThrows(IllegalArgumentException.class, () -> wb.getNameAt(5));
-        assertTrue(ex2.getMessage().contains("outside the allowable range"));
+        assertContains(ex2.getMessage(), "outside the allowable range");
 
         IllegalArgumentException ex = 
assertThrows(IllegalArgumentException.class, () -> wb.getNameAt(-3));
-        assertTrue(ex.getMessage().contains("outside the allowable range"));
+        assertContains(ex.getMessage(), "outside the allowable range");
 
         wb.close();
     }
diff --git 
a/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOfficeXMLException.java 
b/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOfficeXMLException.java
index 8e4dd48298..a35905bbdf 100644
--- 
a/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOfficeXMLException.java
+++ 
b/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOfficeXMLException.java
@@ -17,11 +17,11 @@
 
 package org.apache.poi.poifs.filesystem;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
@@ -45,7 +45,7 @@ class TestOfficeXMLException {
     void testOOXMLException() throws IOException {
         try (InputStream in = openSampleStream("sample.xlsx")) {
             OfficeXmlFileException ex = 
assertThrows(OfficeXmlFileException.class, () -> new POIFSFileSystem(in));
-            assertTrue(ex.getMessage().contains("You are calling the part of 
POI that deals with OLE2 Office Documents"));
+            assertContains(ex.getMessage(), "You are calling the part of POI 
that deals with OLE2 Office Documents");
         }
     }
 
@@ -53,7 +53,7 @@ class TestOfficeXMLException {
     void test2003XMLException() throws IOException {
         try (InputStream in = openSampleStream("SampleSS.xml")) {
             NotOLE2FileException ex = assertThrows(NotOLE2FileException.class, 
() -> new POIFSFileSystem(in));
-            assertTrue(ex.getMessage().contains("The supplied data appears to 
be a raw XML file"));
+            assertContains(ex.getMessage(), "The supplied data appears to be a 
raw XML file");
         }
     }
 
diff --git 
a/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOle10Native.java 
b/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOle10Native.java
index 7a39eb4779..dfe5867946 100644
--- a/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOle10Native.java
+++ b/poi/src/test/java/org/apache/poi/poifs/filesystem/TestOle10Native.java
@@ -17,11 +17,11 @@
 
 package org.apache.poi.poifs.filesystem;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.File;
 import java.io.IOException;
@@ -103,7 +103,7 @@ class TestOle10Native {
                 RecordFormatException.class,
                 () -> Ole10Native.createFromEmbeddedOleObject(fs)
             );
-            assertTrue(ex.getMessage().contains("Tried to allocate"));
+            assertContains(ex.getMessage(), "Tried to allocate");
         }
     }
 
diff --git 
a/poi/src/test/java/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java 
b/poi/src/test/java/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java
index a4c421a2a7..3667a232e0 100644
--- a/poi/src/test/java/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java
+++ b/poi/src/test/java/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java
@@ -18,6 +18,7 @@
 package org.apache.poi.poifs.filesystem;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.*;
 
 import java.io.*;
@@ -163,7 +164,7 @@ final class TestPOIFSFileSystem {
                 () -> new POIFSFileSystem(stream),
                 "File is corrupt and shouldn't have been opened"
             );
-            assertTrue(ex.getMessage().contains("Block 1148 not found"));
+            assertContains(ex.getMessage(), "Block 1148 not found");
         }
     }
 
diff --git 
a/poi/src/test/java/org/apache/poi/ss/formula/TestFormulaShifter.java 
b/poi/src/test/java/org/apache/poi/ss/formula/TestFormulaShifter.java
index 38fb222d8d..c25e878fbc 100644
--- a/poi/src/test/java/org/apache/poi/ss/formula/TestFormulaShifter.java
+++ b/poi/src/test/java/org/apache/poi/ss/formula/TestFormulaShifter.java
@@ -17,10 +17,10 @@
 
 package org.apache.poi.ss.formula;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.poi.ss.SpreadsheetVersion;
 import org.apache.poi.ss.formula.ptg.AreaErrPtg;
@@ -446,8 +446,8 @@ final class TestFormulaShifter {
                 SpreadsheetVersion.EXCEL2007);
         assertNotNull(shifter);
         assertNotNull(shifter.toString());
-        assertTrue(shifter.toString().contains("123"));
-        assertTrue(shifter.toString().contains("456"));
-        assertTrue(shifter.toString().contains("789"));
+        assertContains(shifter.toString(), "123");
+        assertContains(shifter.toString(), "456");
+        assertContains(shifter.toString(), "789");
     }
 }
diff --git 
a/poi/src/test/java/org/apache/poi/ss/formula/TestFunctionRegistry.java 
b/poi/src/test/java/org/apache/poi/ss/formula/TestFunctionRegistry.java
index 1316215623..2d4e3aeccc 100644
--- a/poi/src/test/java/org/apache/poi/ss/formula/TestFunctionRegistry.java
+++ b/poi/src/test/java/org/apache/poi/ss/formula/TestFunctionRegistry.java
@@ -19,9 +19,9 @@
 
 package org.apache.poi.ss.formula;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 
@@ -120,7 +120,7 @@ class TestFunctionRegistry {
             IllegalArgumentException.class,
             () -> FunctionEval.registerFunction("SUMXXX", 
TestFunctionRegistry::na)
         );
-        assertTrue(ex.getMessage().contains("Unknown function: SUMXXX"));
+        assertContains(ex.getMessage(), "Unknown function: SUMXXX");
     }
 
     @Test
diff --git 
a/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java 
b/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java
index b1fced30a5..c53ebddc8f 100644
--- a/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java
+++ b/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.ss.usermodel;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -760,7 +761,7 @@ class TestDataFormatter {
         IllegalArgumentException e = 
assertThrows(IllegalArgumentException.class, () ->
             formatter.formatRawCellContents(_15_MINUTES, -1, "[h]\"\"h\"\" 
m\"\"m\"\"\"\"", false),
             "Catches exception because of invalid format, i.e. trailing 
quoting");
-        assertTrue(e.getMessage().contains("Cannot format given Object as a 
Number"));
+        assertContains(e.getMessage(), "Cannot format given Object as a 
Number");
     }
 
     @Test
diff --git a/poi/src/test/java/org/apache/poi/ss/util/TestCellRangeAddress.java 
b/poi/src/test/java/org/apache/poi/ss/util/TestCellRangeAddress.java
index 321e67fe77..a4de237c41 100644
--- a/poi/src/test/java/org/apache/poi/ss/util/TestCellRangeAddress.java
+++ b/poi/src/test/java/org/apache/poi/ss/util/TestCellRangeAddress.java
@@ -17,6 +17,7 @@ limitations under the License.
 
 package org.apache.poi.ss.util;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -59,7 +60,7 @@ final class TestCellRangeAddress {
     void testLoadInvalid() {
         RuntimeException e = assertThrows(RuntimeException.class, () ->
             new CellRangeAddress(TestcaseRecordInputStream.create(0x000, new 
byte[]{(byte) 0x02})));
-        assertTrue(e.getMessage().contains("Ran out of data"));
+        assertContains(e.getMessage(), "Ran out of data");
     }
 
     @Test
diff --git a/poi/src/test/java/org/apache/poi/ss/util/TestCellReference.java 
b/poi/src/test/java/org/apache/poi/ss/util/TestCellReference.java
index 0d2d791374..31aa987aec 100644
--- a/poi/src/test/java/org/apache/poi/ss/util/TestCellReference.java
+++ b/poi/src/test/java/org/apache/poi/ss/util/TestCellReference.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.ss.util;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -322,7 +323,7 @@ final class TestCellReference {
 
         IllegalArgumentException e = 
assertThrows(IllegalArgumentException.class,
             () -> CellReference.convertColStringToIndex("A$"));
-        assertTrue(e.getMessage().contains("A$"));
+        assertContains(e.getMessage(), "A$");
     }
 
     @Test
diff --git a/poi/src/test/java/org/apache/poi/util/TestHexDump.java 
b/poi/src/test/java/org/apache/poi/util/TestHexDump.java
index 5864041706..8d9b5cade0 100644
--- a/poi/src/test/java/org/apache/poi/util/TestHexDump.java
+++ b/poi/src/test/java/org/apache/poi/util/TestHexDump.java
@@ -17,10 +17,10 @@
 
 package org.apache.poi.util;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 import java.io.PrintStream;
@@ -164,11 +164,11 @@ class TestHexDump {
         byte[] testArray = testArray();
         String dump = HexDump.dump(testArray, 0, 0);
         //System.out.println("Hex: \n" + dump);
-        assertTrue(dump.contains("0123456789:;<=>?"), "Had: \n" + dump);
+        assertContains(dump, "0123456789:;<=>?");
 
         dump = HexDump.dump(testArray, 2, 1);
         //System.out.println("Hex: \n" + dump);
-        assertTrue(dump.contains("123456789:;<=>?@"), "Had: \n" + dump);
+        assertContains(dump, "123456789:;<=>?@");
     }
 
     @ParameterizedTest
diff --git a/poi/src/test/java/org/apache/poi/util/TestLittleEndianStreams.java 
b/poi/src/test/java/org/apache/poi/util/TestLittleEndianStreams.java
index 8f505f793c..e44536c149 100644
--- a/poi/src/test/java/org/apache/poi/util/TestLittleEndianStreams.java
+++ b/poi/src/test/java/org/apache/poi/util/TestLittleEndianStreams.java
@@ -17,11 +17,11 @@
 
 package org.apache.poi.util;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 
@@ -92,7 +92,7 @@ final class TestLittleEndianStreams {
 
         // only one byte left, so this should fail
         RuntimeException ex = assertThrows(RuntimeException.class, () -> 
lei.readFully(new byte[4]));
-        assertTrue(ex.getMessage().contains("Buffer overrun"));
+        assertContains(ex.getMessage(), "Buffer overrun");
     }
 
     @Test
@@ -102,7 +102,7 @@ final class TestLittleEndianStreams {
 
         // only one byte left, so this should fail
         RuntimeException ex = assertThrows(RuntimeException.class, () -> 
lei.readFully(new byte[4]));
-        assertTrue(ex.getMessage().contains("Buffer overrun"));
+        assertContains(ex.getMessage(), "Buffer overrun");
     }
 
     @Test
@@ -112,6 +112,6 @@ final class TestLittleEndianStreams {
 
         // only one byte left, so this should fail
         RuntimeException ex = assertThrows(RuntimeException.class, () -> 
lei.readFully(new byte[4]));
-        assertTrue(ex.getMessage().contains("Buffer overrun"));
+        assertContains(ex.getMessage(), "Buffer overrun");
     }
 }
diff --git a/poi/src/test/java/org/apache/poi/util/TestXMLHelper.java 
b/poi/src/test/java/org/apache/poi/util/TestXMLHelper.java
index f291aea270..442f6888c5 100644
--- a/poi/src/test/java/org/apache/poi/util/TestXMLHelper.java
+++ b/poi/src/test/java/org/apache/poi/util/TestXMLHelper.java
@@ -17,6 +17,7 @@
 
 package org.apache.poi.util;
 
+import static org.apache.poi.POITestCase.assertContains;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -122,9 +123,7 @@ class TestXMLHelper {
                 
assertTrue(reader.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING));
             } catch (SAXNotRecognizedException e) {
                 // can happen for older XML Parsers, e.g. we have a CI Job 
which runs with Xerces XML Parser
-                
assertTrue(reader.getClass().getName().contains("org.apache.xerces"),
-                    "Had Exception about not-recognized SAX feature: " + e + " 
which is only expected" +
-                    " for Xerces XML Parser, but had parser: " + reader);
+                assertContains(reader.getClass().getName(), 
"org.apache.xerces");
             }
             readers.add(reader);
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to