I had the same issue after upgrading my project from Java 8 to 9.
My tests passed when running from my IDE, but failed when run with maven, and all surefire reports were clean, no failures.
Then I opened an html surefire report found in ${project_dir}/target/surefire-reports/testng-junit-results where I saw the whole stack trace from that one failure and it had something to do with java.base module which I had problems with before (the standard Java 9 modules accessibility issues) so I realized I had to add a few --add-opens flags in my surefire plugin argLine:
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
This issue was super frustrating because the errors were not intuitive, I still don't understand why it just didn't say "module java.base does not "opens jdk.internal.loader" to unnamed module" like I've seen before.