cucumber.runtime.DuplicateStepDefinitionException:

问题描述 投票:0回答:3

你好,我是黄瓜和硒的新手。我正在尝试使用多个黄瓜功能文件执行我的 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
maven selenium cucumber
3个回答
2
投票

如错误消息所示,您已在单独的类中定义了两个步骤定义方法,它们匹配相同的正则表达式 -

test_cases.invalid_login.close_browser() & test_cases.valid_loign.close_browser()

close_browser 方法在 2 个单独的类中定义,并具有相同的表达式来匹配。项目中的所有步骤定义都会全局加载,无论您运行的场景是否使用它们。

您可以删除这些方法之一,或者使用特征文件中的相同更改来更改给定的、when、then 注释中的表达式。


0
投票

解决方案之一是结合场景并为整个项目保留 1 个功能文件。 如果句子包含相同的单词,请尝试给出相同的名称,如果名称相同,它将被视为 1,并在执行 Runner 类后创建 1 个方法而不是 2 个方法。 没有maven项目我们可以执行多个功能文件。


0
投票

当stepdefinition在不同项目中具有相同的方法名称时,就会出现此问题。

尝试更改特征中的给定、何时、然后以及步骤定义中的相同。

遇到同样的错误并尝试了上述方法,它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.