首页 > 解决方案 > Cucumber 和 Jenkins:错误的“重复步骤定义”

问题描述

我在 Java、Selenium 和 Cucumber 项目的 Jenkins 构建中收到此错误消息:

Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 1.466 sec <<< FAILURE! - in 
e2e.CucumberTest
e2e.CucumberTest  Time elapsed: 1.466 sec  <<< ERROR!
cucumber.runtime.DuplicateStepDefinitionException: Duplicate step definitions in void  
e2e.sak.OpprettSakSteps.TestCaseDSLTester(String) in file:/tmp/workspace/n_DSL-og- 
TestsakBuilder_combined/e2e/cucumber/target/test-classes/ and 
e2e.sak.OpprettSakSteps.TestCaseDSLTester$default(OpprettSakSteps,String,int,Object) in file:/tmp
/workspace/n_DSL-og-TestsakBuilder_combined/e2e/cucumber/target/test-classes/

我没有看到假定的重复步骤定义在哪里?查看 Java/Kotlin 文件时,绝对没有重复,并且所有步骤定义都有一个尾随的“$”(这是早期错误重复消息的原因)。另外,我不明白詹金斯在比较什么,尽管它似乎试图向我展示副本的确切位置:

e2e.sak.OpprettSakSteps.TestCaseDSLTester(String)

and

e2e.sak.OpprettSakSteps.TestCaseDSLTester$default(OpprettSakSteps,String,int,Object)

它指向相同的方法,但参数不同?方法名称和 Cucumber 步骤定义名称都不相同,那么它在抱怨什么?

这是步骤定义kode(Kotlin):

@Gitt("^jeg prøver meg på DSL for \"([^\"]*)\"$")
fun TestsakDSLTester(saksRef: String = "saken") {
    TestsakDSL.create {
        opprettet = LocalDateTime.now().minusDays(1)                                                                                                    
        kommunenr = "5035"                                                                                                              
        hovedsoker = "Kåre Kotlin"                                                                                                      
        fnr = "22097930922"                                                                                                             
        sokere = 2                                                                                                                      
        arbeidlisteHovedsoker { mutableListOf(mutableListOf("Knus og Knask AS", 100, true), 
        mutableListOf("Del og Hel", 20, false)) }
        arbeidlisteMedsoker { mutableListOf(mutableListOf("Kiosken på hjørnet", 50, false)) }                                          
        barn = 2                                                                                                                        
        biler = 1                                                                                                                       
        verger = mutableListOf(VergeUtils.Companion.VergeFor.HOVEDSOKER, 
                 VergeUtils.Companion.VergeFor.MEDSOKER)

    }

    System.out.println("");
}

@Gitt("en sak med (\\d+) søkere med hver sin verge$")
fun enSakMedNSokereMedHverSinVerge(): Testsak {
    return TestsakBuilder("saken",  "5035") 
           .setSoknadtype(Bakgrunn.Hva.values().toList().shuffled().first())
           .setVerger(vergeFor = 
             mutableListOf(VergeUtils.Companion.VergeFor.HOVEDSOKER)).createSak().build();
}

标签: javajenkinskotlincucumber

解决方案


推荐阅读