java - 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();
}
解决方案
推荐阅读
- flutter - Flutter - 如何将“FlatButton”转换为“RaisedButton”(切换深色/浅色主题)?+ 文字样式
- flutter - 在 TextFormField 验证器 Flutter 中调用异步函数
- javascript - 使用 react router dom 滚动到新页面上的特定 div
- linux - 如何在 perf 程序中启用硬件事件?
- c# - 需要完整路径保存的 Visual Studio 集成 SQL 数据库
- firebase - 设置“触发电子邮件”Firebase 扩展
- r - R如何将一列添加到csv文件列表中
- css - 瓷砖间距相等
- reactjs - 如何模拟 API 并遵循与静态数组相同的方法?
- python - OverflowError: Python int too large to convert to C long - TCP Reset Attack code