你好,我是黄瓜和硒的新手。我正在尝试使用多个黄瓜功能文件执行我的 Maven 项目。但是当我执行以下错误时,我得到了。
cucumber.runtime.DuplicateStepDefinitionException: Duplicate step definitions in test_cases.invalid_login.close_browser() in file:/D:/rakesh/folder/neon%20workspace/com.maven.cucum/target/test-classes/ and test_cases.valid_loign.close_browser() in file:/D:/rakesh/folder/neon%20workspace/com.maven.cucum/target/test-classes/
at cucumber.runtime.RuntimeGlue.addStepDefinition(RuntimeGlue.java:33)
at cucumber.runtime.java.JavaBackend.addStepDefinition(JavaBackend.java:151)
at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:68)
at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:41)
at cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)
at cucumber.runtime.Runtime.<init>(Runtime.java:92)
at cucumber.runtime.Runtime.<init>(Runtime.java:70)
at cucumber.runtime.Runtime.<init>(Runtime.java:66)
at cucumber.api.junit.Cucumber.createRuntime(Cucumber.java:80)
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:59)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
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.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
特征文件是
Feature: login page functionality
Scenario: invalid login test
Given open a browser and goto login page
When enter "[email protected]" "Phari@9169"
Then verify invalid credential message
And close browser
还有
Feature: login page functionlity
Scenario: valid login test
Given open a browser and goto login page
When enter "[email protected]" "Phari@9169"
Then check login user
And Logout
And close browser
如错误消息所示,您已在单独的类中定义了两个步骤定义方法,它们匹配相同的正则表达式 -
test_cases.invalid_login.close_browser() & test_cases.valid_loign.close_browser()
。
close_browser 方法在 2 个单独的类中定义,并具有相同的表达式来匹配。项目中的所有步骤定义都会全局加载,无论您运行的场景是否使用它们。
您可以删除这些方法之一,或者使用特征文件中的相同更改来更改给定的、when、then 注释中的表达式。
解决方案之一是结合场景并为整个项目保留 1 个功能文件。 如果句子包含相同的单词,请尝试给出相同的名称,如果名称相同,它将被视为 1,并在执行 Runner 类后创建 1 个方法而不是 2 个方法。 没有maven项目我们可以执行多个功能文件。
当stepdefinition在不同项目中具有相同的方法名称时,就会出现此问题。
尝试更改特征中的给定、何时、然后以及步骤定义中的相同。
遇到同样的错误并尝试了上述方法,它对我有用。