@@ -100,8 +100,10 @@ private void writeNonPassedElement(EscapingXmlStreamWriter writer, TestCaseStart
100100 Optional <String > message = result .getMessage ();
101101 Optional <String > exceptionType = result .getException ().map (Exception ::getType );
102102 Optional <String > exceptionMessage = result .getException ().flatMap (Exception ::getMessage );
103+ Optional <String > exceptionStackTrace = result .getException ().flatMap (Exception ::getStackTrace );
103104
104- if (message .isPresent ()) {
105+ boolean hasMessageOrStackTrace = message .isPresent () || exceptionStackTrace .isPresent ();
106+ if (hasMessageOrStackTrace ) {
105107 writer .writeStartElement (elementName );
106108 } else {
107109 writer .writeEmptyElement (elementName );
@@ -113,13 +115,21 @@ private void writeNonPassedElement(EscapingXmlStreamWriter writer, TestCaseStart
113115 if (exceptionMessage .isPresent ()) {
114116 writer .writeAttribute ("message" , exceptionMessage .get ());
115117 }
116- if (message .isPresent ()) {
117- writer .newLine ();
118- writer .writeCData (message .get ());
119- writer .newLine ();
118+ if (hasMessageOrStackTrace ) {
119+ if (exceptionStackTrace .isPresent ()) {
120+ writer .newLine ();
121+ writer .writeCData (exceptionStackTrace .get ());
122+ writer .newLine ();
123+ } else {
124+ // Fall back to message for older implementations
125+ // that put the stack trace in the message
126+ writer .newLine ();
127+ writer .writeCData (message .get ());
128+ writer .newLine ();
129+ }
120130 }
121131
122- if (message . isPresent () ) {
132+ if (hasMessageOrStackTrace ) {
123133 writer .writeEndElement ();
124134 }
125135 writer .newLine ();
0 commit comments