The combination Surefire/JUnit 4 causes a NullPointerException in org.apache.maven.plugin.surefire.report.AbstractTextReporter if one has a RunListener configured which (for whatever reason) throws an exception in its #testRunStarted(Description) method.
I have attached a dummy project; run `mvn test` to see the problem. The cause of this issue is that AbstractTextReporter initializes its testResults field when AbstractTextReporter#testSetStarting(ReportEntry) is called, which (it seems) doesn't happen until JUnit invokes RunNotifier#fireTestStarted(Description). This is too late, because an exception during the invocation of RunNotifier#fireTestRunStarted(Description) causes AbstractTextReporter#testError(ReportEntry, String, String) to be invoked. The result is an NPE on line 103.