我正在执行多个套件:
<!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个