在运行自动化时,我面临以下问题。这就是我在控制台上看到的。
伊奥。cucumber果心例外cucumber例外:爪哇。lang.NoClassDefFoundError:io/cucumber/messages/internal/com/google/protobuf/GeneratedMessageV3
at io.cucumber.core.plugin.PluginFactory.newInstance(PluginFactory.java:120)
at io.cucumber.core.plugin.PluginFactory.instantiate(PluginFactory.java:99)
at io.cucumber.core.plugin.PluginFactory.create(PluginFactory.java:63)
at io.cucumber.core.plugin.Plugins.createPlugins(Plugins.java:32)
at io.cucumber.core.plugin.Plugins.<init>(Plugins.java:25)
at io.cucumber.testng.TestNGCucumberRunner.<init>(TestNGCucumberRunner.java:108)
at io.cucumber.testng.AbstractTestNGCucumberTests.setUpClass(AbstractTestNGCucumberTests.java:27)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:62)
at org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:385)
at org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:321)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:176)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.testng.TestRunner.privateRun(TestRunner.java:794)
at org.testng.TestRunner.run(TestRunner.java:596)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:377)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:371)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:332)
at org.testng.SuiteRunner.run(SuiteRunner.java:276)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1212)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1134)
at org.testng.TestNG.runSuites(TestNG.java:1063)
at org.testng.TestNG.run(TestNG.java:1031)
at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)
at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:109)
造成原因:java.lang.NoClassDefFoundError: io/cucumber/消息/内部/com/google/原型/GeneratedMessageV3在com.aventstack.extentreports.cucumber.adapter.ExentCucumberAdapter.(扩展CucumberAdapter.java:91)在java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本地方法)在java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)在java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance在java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)io.cucumber.core.plugin.PluginFactory.new实例(PluginFactory.java:116)-plhd--17/>$AppClassLoader.load类(ClassLoaders.java:178)at java. base/java. lang.ClassLoader. loadClass(ClassLoader. java: 522)...37 more
嗨,当cucumber7出来的时候,我也遇到了同样的问题,就在今天,我能够解决它,基本上我所做的就是更新一些其他可能受到cucumber版本影响的框架的版本(在我的pom.xml
file)。这些是我在稳定版本中使用的框架:
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>5.0.8</version>
</dependency>
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>klov-reporter</artifactId>
<version>5.0.8</version>
</dependency>
<dependency>
<groupId>tech.grasshopper</groupId>
<artifactId>extent-pdf-report</artifactId>
<version>1.7.3</version>
</dependency>
<dependency>
<groupId>tech.grasshopper</groupId>
<artifactId>extentreports-cucumber7-adapter</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-cucumber7-jvm</artifactId>
<version>2.17.2</version>
</dependency>
我希望这有助于解决你的问题,最好的问候!
要找出加载了哪个类(哪些没有),请在详细模式下运行Java,但仅限于类加载,如下所示:
java -verbose:class ...
从这个输出中,您应该能够确定丢失了哪个类。如果您再次查看GeneratedMessageV3,请尝试查看该类的源代码。可能是某个静态初始值设定项抛出了一个异常,该异常只是告诉JVM该类无法成功加载。
啊,这是一个棘手的问题。从插件工厂堆栈跟踪,我猜它是由以下原因引起的:您有一个包含步骤绑定的类(例如,给定我登录)。要创建这个类,您需要Specflow向构造函数中注入一些类(依赖注入)。如果该类在另一个项目中,但StepALL(见specflow.json或app.config)或项目引用不正确,则可能会发生这种情况。请参见代码示例(不幸的是,C#,但这一点应该很清楚)
[Binding]
public class Test{
public Test(ThisClassNotInAssembly getMe){
getMe.SomeFunction();
}
}
另一个选项是,一个步骤需要一个转换(从字符串到MyNotDependency类)。同样,该类位于另一个项目中,并且在运行时依赖性失败。
我无法同时运行TestNG/JUnit的Cucumber TestRunner类。我希望在我的框架中包含Testng和junit。我得到一些abc类错误。我的项目中有所有的依赖项。我这里有2qns。1.当从cucumber junit导入时,我可以在我的cucumber脚本中使用Testng注释吗?2.如何解决错误执行我的testrun。 我错过了什么...如果我错过了什么,请帮我把它修好。
以下是示例代码: //添加这行代码是为了禁用扩展,但仍然可以获得警报功能。setCapability(“chrome.switches”、Arrays.asList(“--disable extensions”); 如何在移动仿真模式下禁用此扩展警报? 如果我添加以下代码,移动仿真不显示: ChromeOptions选项=new ChromeOptions(); options.add参数("--
这可能吗?我对Gradle了解不多,Google到目前为止还没有产生任何真正有用的东西。
另一个,如果我有另一个应用程序使用相同的使用者组,所有的分区会被重新分配到该应用程序吗?
下面是我的pom.xml、testng.xml文件和TestRunners。 下面是我的pom.xml文件 [Utils][ERROR][ERROR]java.lang.NullPointerException在Cucumber.api.testng.AbstractTestngCucumberTests.Scenaries(AbstractTestngCucumberTests.java:31)
我在Ubuntu服务器上最近安装的Jenkins上运行自动化项目时遇到了麻烦。我有以下错误: 我已经读到应该更新selenium webdriver gem,但我已经更新了它。也在詹金斯安装了firefox插件,但仍然无法运行。