TestNG停止在TestListener

时间:2018-11-07 14:20:05

标签: java exception gradle exception-handling testng

我正在执行多个套件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="MasterSuite">
    <suite-files>
        <suite-file path="testSuite1" />
        <suite-file path="testSuite2" />
    </suite-files>
</suite>

我有自己的TestListener,并且正在覆盖方法 onStart onTestFailure 。我偶然发现其中一个例外(配置问题)。在这种情况下,异常会冒泡直到Gradle执行并停止整个执行。我想停止只执行错误的套件,而继续其余套件。任何想法?

我认为这里唯一的选择是捕获异常,但是如何停止执行当前套件呢?

这里是例外:

  

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException:   无法在以下位置完成Gradle Test Executor 1的执行:   org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)     在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)在   org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)     在   org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)     在   org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)     在   org.gradle.internal.dispatch.ProxyDispatchAdapter $ DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)     在com.sun.proxy。$ Proxy3.stop(未知来源)   org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:120)     在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)在   org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)     在   org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)     在   org.gradle.internal.remote.internal.hub.MessageHub $ Handler.run(MessageHub.java:377)     在   org.gradle.internal.concurrent.ExecutorPolicy $ CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)     在   org.gradle.internal.concurrent.StoppableExecutorImpl $ 1.run(StoppableExecutorImpl.java:40)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)     在   java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)     在java.lang.Thread.run(Thread.java:748)造成原因:   org.openqa.selenium.TimeoutException:超时(会话信息:   chrome = 63.0.3239.132)(驱动程序信息:chromedriver = 2.35.528139   (47ead77cb35ad2a9a83248b292151462a66cd881),平台= Linux   4.9.77-31.58.amzn1.x86_64 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0   毫秒版本信息:版本:“ 3.5.3”,修订版:“ a88d25fe6b”,   时间:'2017-08-29T12:42:44.417Z'系统信息:主机:'e211dad05a4e',   ip:'172.17.0.4',os.name:'Linux',os.arch:'amd64',os.version:   '4.9.77-31.58.amzn1.x86_64',java.version:'1.8.0_151'驱动程序信息:   org.openqa.selenium.remote.RemoteWebDriver功能   [{mobileEmulationEnabled = false,hasTouchScreen = false,platform = LINUX,   acceptSslCerts = false,acceptInsecureCerts = false,   webStorageEnabled = true,browserName = chrome,takesScreenshot = true,   javascriptEnabled = true,platformName = LINUX,setWindowRect = true,   excellentAlertBehaviour =,applicationCacheEnabled = false,   rotatable = false,networkConnectionEnabled = false,   chrome = {chromedriverVersion = 2.35.528139   (47ead77cb35ad2a9a83248b292151462a66cd881),   userDataDir = / tmp / .org.chromium.Chromium.aeHoaR},   takeHeapSnapshot = true,pageLoadStrategy = normal,   unhandledPromptBehavior =,databaseEnabled = false,handlesAlerts = true,   版本= 63.0.3239.132,browserConnectionEnabled = false,   nativeEvents = true,locationContextEnabled = true,   cssSelectorsEnabled = true}]会话ID:   2a478f187f329e2498c98b401ac8131b at   sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)     在   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)     在   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)     在java.lang.reflect.Constructor.newInstance(Constructor.java:423)     在   org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215)     在   org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)     在   org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)     在   org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:82)     在   org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:45)     在   org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)     在   org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:646)     在   org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:703)     在   org.openqa.selenium.remote.RemoteWebDriver $ RemoteNavigation.refresh(RemoteWebDriver.java:962)     在   common.core.listeners.TestListener.onTestFailure(TestListener.java:310)     在   org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:67)     在org.testng.internal.Invoker.runTestListeners(Invoker.java:1389)     在org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1042)     在   org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)     在   org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)     在org.testng.TestRunner.privateRun(TestRunner.java:648)处   org.testng.TestRunner.run(TestRunner.java:505)在   org.testng.SuiteRunner.runTest(SuiteRunner.java:455)在   org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)在   org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)在   org.testng.SuiteRunner.run(SuiteRunner.java:364)在   org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)在   org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)在   org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)在   org.testng.TestNG.runSuitesSequentially(TestNG.java:1204)在   org.testng.TestNG.runSuitesSequentially(TestNG.java:1204)在   org.testng.TestNG.runSuitesSequentially(TestNG.java:1204)在   org.testng.TestNG.runSuitesLocally(TestNG.java:1137)在   org.testng.TestNG.runSuites(TestNG.java:1049)在   org.testng.TestNG.run(TestNG.java:1017)在   org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.runTests(TestNGTestClassProcessor.java:129)     在   org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.stop(TestNGTestClassProcessor.java:88)     在   org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)     ...另外22个

0 个答案:

没有答案