cucumber.runtime.DuplicateStepDefinitionException:

时间:2017-02-14 09:34:12

标签: maven selenium cucumber

您好我是黄瓜和硒的新手。我正在尝试使用多个黄瓜功能文件执行我的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 "test@techved.com" "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 "rakeshm@techved.com" "Phari@9169"
    Then check login user
    And Logout
    And close browser

2 个答案:

答案 0 :(得分:2)

正如错误消息所述,您已在单独的类中定义了两个步骤定义方法,这些方法匹配相同的正则表达式 - test_cases.invalid_login.close_browser() & test_cases.valid_loign.close_browser()

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

您可以删除其中一种方法,也可以在功能文件中使用相同更改的时间更改给定时间,表达式中的表达式。

答案 1 :(得分:0)

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

相关问题