After Assert.fail("some message"); in TestNG, the failure message I am getting is like:
java.lang.AssertionError: some message
at org.testng.test.BasicTest.test(BasicTest.java:11)
... Removed 31 stack frames
But I want failure message only, like :
some message
That means, I want to remove stack trace info:
java.lang.AssertionError:
and
at org.testng.test.BasicTest.test(BasicTest.java:11)
... Removed 31 stack frames
Here, I wrote listener to get control over method execution, changed failure message:
public class ErrorMessageListener implements IInvokedMethodListener {
private static Logger logger = Logger.getLogger(ErrorMessageListener.class);
@Override
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {}
@Override
public void afterInvocation(IInvokedMethod method, ITestResult result) {
logger.info("Invoked afterInvocation(IInvokedMethod, ITestResult)");
if (method.isTestMethod() && ITestResult.FAILURE == result.getStatus()) {
Throwable throwable = result.getThrowable();
String originalMessage = throwable.getMessage();
logger.info("Original : " + originalMessage);
String modifiedMessage = originalMessage.replace("java.lang.AssertionError:", "").trim();
logger.info("Modified : " + modifiedMessage);
try {
FieldUtils.writeField(throwable, "detailMessage", modifiedMessage, false);
} catch (Exception cause) {
cause.printStackTrace();
}
}
}
}
and added it to test class :
@Listeners(ErrorMessageListener.class)
public class BasicTest {
@Test
public void test(){
Assert.fail("some message");
}
}
But still I am getting same failure message :
java.lang.AssertionError: some message
at org.testng.test.BasicTest.test(BasicTest.java:11)
... Removed 31 stack frames
Aucun commentaire:
Enregistrer un commentaire