Open
abinashb414
opened this issue 3 years ago
•
11 comments
Hi team,
I am getting the below error while executing the test case.
Unable to provision, see the following errors:
Error injecting constructor, java.lang.NoClassDefFoundError: org/jsmart/zerocode/core/di/provider/GsonSerDeProvider$KafkaHeadersAdapter
at org.jsmart.zerocode.core.kafka.send.KafkaSender.(KafkaSender.java:41)
at org.jsmart.zerocode.core.kafka.send.KafkaSender.class(KafkaSender.java:41)
while locating org.jsmart.zerocode.core.kafka.send.KafkaSender
for field at org.jsmart.zerocode.core.kafka.client.BasicKafkaClient.sender(BasicKafkaClient.java:10)
while locating org.jsmart.zerocode.core.kafka.client.BasicKafkaClient
for field at org.jsmart.zerocode.core.engine.executor.ApiServiceExecutorImpl.kafkaClient(ApiServiceExecutorImpl.java:12)
while locating org.jsmart.zerocode.core.engine.executor.ApiServiceExecutorImpl
while locating org.jsmart.zerocode.core.engine.executor.ApiServiceExecutor
We have started api automation using zero code and this is a multi module gradle project.
We have a multi module gradle project for our application which is build using gradle 2.14. And inside that we have created one more module for our component testing(api)
In our project we have created one custom framework using zero code of version 1.3.20 and there we created one customised class(E2eJunitRunner) by extending the ZeroCodeUnitRunner class by overriding getMainModuleInjector method (to use customised properties file)
We are running with @Runwith annotation(defining in class level) and passing E2eJunitRunner class.
While executing test case getting the above mentioned error, but no where we have used kafka in our project.
@abinashb414 well , in getMainModuleInjector it also injects Kafka module. If you want to point to your specific property file, you can use @TargetEnv annotation( you don't have to overide anything).
@sparrowV thanks for the update, definitely I will go through that and post that will update here. If there is any reference (sample code where they have used this annotation) available for @TargetEnv please provide, that may be helpful for us.
@abinashb414 You can check out this.
You put the @TargetEnv annotation on top of the test class and specify the property file, that you created and placed in resources folder
Using @Scenario also i have tried earlier, we were using 1.3.20 version now upgraded to 1.3.27. getting below error now
Unable to provision, see the following errors:
Error injecting constructor, java.lang.NoClassDefFoundError: com/google/gson/TypeAdapter
at org.jsmart.zerocode.core.kafka.send.KafkaSender.(KafkaSender.java:45)
at org.jsmart.zerocode.core.kafka.send.KafkaSender.class(KafkaSender.java:45)
while locating org.jsmart.zerocode.core.kafka.send.KafkaSender
for field at org.jsmart.zerocode.core.kafka.client.BasicKafkaClient.sender(BasicKafkaClient.java:11)
while locating org.jsmart.zerocode.core.kafka.client.ZerocodeCustomKafkaClient
while locating org.jsmart.zerocode.core.kafka.client.BasicKafkaClient
for field at org.jsmart.zerocode.core.engine.executor.ApiServiceExecutorImpl.kafkaClient(ApiServiceExecutorImpl.java:13)
while locating org.jsmart.zerocode.core.engine.executor.ApiServiceExecutorImpl
Error injecting constructor, java.lang.NoClassDefFoundError: com/google/gson/TypeAdapter
at org.jsmart.zerocode.core.kafka.send.KafkaSender.(KafkaSender.java:45)
at org.jsmart.zerocode.core.kafka.send.KafkaSender.class(KafkaSender.java:45)
while locating org.jsmart.zerocode.core.kafka.send.KafkaSender
for field at org.jsmart.zerocode.core.kafka.client.BasicKafkaClient.sender(BasicKafkaClient.java:11)
while locating org.jsmart.zerocode.core.kafka.client.BasicKafkaClient
for field at org.jsmart.zerocode.core.engine.executor.ApiServiceExecutorImpl.kafkaClient(ApiServiceExecutorImpl.java:13)
while locating org.jsmart.zerocode.core.engine.executor.ApiServiceExecutorImpl
while locating org.jsmart.zerocode.core.engine.executor.ApiServiceExecutor
for field at org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunnerImpl.apiExecutor(ZeroCodeMultiStepsScenarioRunnerImpl.java:43)
at org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunnerImpl.class(ZeroCodeMultiStepsScenarioRunnerImpl.java:43)
while locating org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunnerImpl
while locating org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunner
1 error
com.google.inject.ProvisionException: Unable to provision, see the following errors:
Error injecting constructor, java.lang.NoClassDefFoundError: com/google/gson/TypeAdapter
at org.jsmart.zerocode.core.kafka.send.KafkaSender.(KafkaSender.java:45)
at org.jsmart.zerocode.core.kafka.send.KafkaSender.class(KafkaSender.java:45)
while locating org.jsmart.zerocode.core.kafka.send.KafkaSender
for field at org.jsmart.zerocode.core.kafka.client.BasicKafkaClient.sender(BasicKafkaClient.java:11)
while locating org.jsmart.zerocode.core.kafka.client.BasicKafkaClient
for field at org.jsmart.zerocode.core.engine.executor.ApiServiceExecutorImpl.kafkaClient(ApiServiceExecutorImpl.java:13)
while locating org.jsmart.zerocode.core.engine.executor.ApiServiceExecutorImpl
while locating org.jsmart.zerocode.core.engine.executor.ApiServiceExecutor
for field at org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunnerImpl.apiExecutor(ZeroCodeMultiStepsScenarioRunnerImpl.java:43)
at org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunnerImpl.class(ZeroCodeMultiStepsScenarioRunnerImpl.java:43)
while locating org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunnerImpl
while locating org.jsmart.zerocode.core.runner.ZeroCodeMultiStepsScenarioRunner
1 error
at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1025)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
at org.jsmart.zerocode.core.runner.ZeroCodeUnitRunner.getInjectedMultiStepsRunner(ZeroCodeUnitRunner.java:147)
at org.jsmart.zerocode.core.runner.ZeroCodeUnitRunner.createZeroCodeMultiStepRunner(ZeroCodeUnitRunner.java:265)
at org.jsmart.zerocode.core.runner.ZeroCodeUnitRunner.(ZeroCodeUnitRunner.java:95)
at com.flipkart.zeta.testconfig.E2eJunitRunner.(E2eJunitRunner.java:32)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:57)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:377)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: com/google/gson/TypeAdapter
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.jsmart.zerocode.core.di.provider.GsonSerDeProvider.get(GsonSerDeProvider.java:23)
at org.jsmart.zerocode.core.kafka.send.KafkaSender.(KafkaSender.java:56)
at org.jsmart.zerocode.core.kafka.send.KafkaSender$$FastClassByGuice$$dd3b6378.newInstance()
at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54)
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54)
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54)
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
... 41 more
Caused by: java.lang.ClassNotFoundException: com.google.gson.TypeAdapter
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 91 more
@abinashb414 Can you manually add the google Gson dependency in your project? Also, It would be great if you create a sample project, where this error happens and we will run that project locally to see it in action.