From b95a66e055d596976c08be8320eba507a9a24d78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Piotrowski?= <32669340+mpiotrowski-im@users.noreply.github.com> Date: Wed, 17 Oct 2018 12:45:42 +0200 Subject: [PATCH] fix: propagates exception from running runner.run() method (#184) If someone omits required runtime class in a deployment archive there will be ClassDefNotFoundError when executing run() method in TestNGRunner. Arquillian servlet will return HTTP code 500 which is ignored in servlet protocol runner and consequently returned as a test which passed. But in reality the test did not even run and should be marked as failed. --- .../arquillian/testng/container/TestNGTestRunner.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/testng/container/src/main/java/org/jboss/arquillian/testng/container/TestNGTestRunner.java b/testng/container/src/main/java/org/jboss/arquillian/testng/container/TestNGTestRunner.java index 3151ebbcf..3e6485b87 100644 --- a/testng/container/src/main/java/org/jboss/arquillian/testng/container/TestNGTestRunner.java +++ b/testng/container/src/main/java/org/jboss/arquillian/testng/container/TestNGTestRunner.java @@ -46,7 +46,12 @@ public TestResult execute(Class testClass, String methodName) { runner.setXmlSuites( Collections.singletonList(createSuite(testClass, methodName))); - runner.run(); + //we catch problems in executing run method, e.g. ClassDefNotFoundError and wrap it in TestResult + try { + runner.run(); + } catch (Throwable ex) { + return TestResult.failed(ex); + } return resultListener.getTestResult(); }