-
Notifications
You must be signed in to change notification settings - Fork 7
Description
Добрый день
Использую cucumber 7.13.0 + testNG 7.7.0 с адаптером версии 1.4.0
При параллельном выполнении тестов выпадает следующая ошибка:
java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because "time" is null
at ru.testit.writers.Converter.dateToOffsetDateTime(Converter.java:234)
at ru.testit.writers.Converter.lambda$convertResultStep$7(Converter.java:202)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at ru.testit.writers.Converter.convertResultStep(Converter.java:210)
at ru.testit.writers.Converter.testResultToAutoTestResultsForTestRunModel(Converter.java:65)
at ru.testit.writers.HttpWriter.writeTest(HttpWriter.java:71)
at ru.testit.services.AdapterManager.stopTestCase(AdapterManager.java:312)
at ru.testit.listener.BaseCucumber7Listener.testFinished(BaseCucumber7Listener.java:187)
at io.cucumber.core.eventbus.AbstractEventPublisher.send(AbstractEventPublisher.java:51)
at io.cucumber.core.eventbus.AbstractEventBus.send(AbstractEventBus.java:12)
at io.cucumber.core.runtime.SynchronizedEventBus.send(SynchronizedEventBus.java:47)
at io.cucumber.core.runtime.ThreadLocalRunnerSupplier$LocalEventBus.send(ThreadLocalRunnerSupplier.java:62)
at io.cucumber.core.runner.TestCase.emitTestCaseFinished(TestCase.java:219)
at io.cucumber.core.runner.TestCase.run(TestCase.java:98)
at io.cucumber.core.runner.Runner.runPickle(Runner.java:75)
at io.cucumber.testng.TestNGCucumberRunner.lambda$runScenario$1(TestNGCucumberRunner.java:132)
at io.cucumber.core.runtime.CucumberExecutionContext.lambda$runTestCase$5(CucumberExecutionContext.java:137)
at io.cucumber.core.runtime.RethrowingThrowableCollector.executeAndThrow(RethrowingThrowableCollector.java:23)
at io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:137)
at io.cucumber.testng.TestNGCucumberRunner.runScenario(TestNGCucumberRunner.java:129)
at io.cucumber.testng.AbstractTestNGCucumberTests.runScenario(AbstractTestNGCucumberTests.java:35)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
at org.testng.internal.invokers.TestMethodWithDataProviderMethodWorker.call(TestMethodWithDataProviderMethodWorker.java:80)
at org.testng.internal.invokers.TestMethodWithDataProviderMethodWorker.call(TestMethodWithDataProviderMethodWorker.java:17)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
При этом при параллельном выполнении с отключенным адаптером ошибок нет, при включённом адаптере и не-параллельном выполнении тоже.
Ошибки падают в т.ч. на тех же сценариях, которые прямо перед этим были выполнены успешно (т.е. при использовании scenario outline с несколькими examples).
Кол-во потоков никак не влияет на выпадение ошибки, падает даже на двух потоках.
Настройки параллельного выполнения стандартные в соответствии с документацией кукумбера https://cucumber.io/docs/guides/parallel-execution/?lang=java#testng
public class CucumberRunnerTest extends AbstractTestNGCucumberTests {
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
}
Проперти testit:
url=url
privateToken=token
projectId=project
configurationId=config
certValidation=false
adapterMode=2
automaticCreationTestCases=false