我遇到了一個問題,我的自定義黃瓜配置在同一個測驗專案中作業,但在其他測驗專案中不能作為依賴項作業
CustomTypeRegistry 類:
public class CustomTypeRegistry {
@ParameterType("customEx\\([0-9] \\)")
public Integer custom(String original) {
return new Random().nextInt();
}
}
Java膠水步驟:
@When("generate {custom} for test")
public void testStep(int randomNumber) {
System.out.println(randomNumber);
}
場景步驟:
When generate customEx(5) for test
當我在存在黃瓜配置的同一個專案中創建測驗時,這非常有效。
當我將專案打包到 jar 并將其作為依賴項添加到另一個測驗專案時,它會識別該步驟,但在運行時出現錯誤:
17-11-2021 14:15:55.592 [main] 錯誤 io.cucumber.core.runtime.Runtime.log - 執行 pickle 時出現例外 java.util.concurrent.ExecutionException: io.cucumber.core.exception.CucumberException: 無法為“生成 {custom} for test”創建一個黃瓜運算式。看來您沒有注冊引數型別。在 java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) 在 io.cucumber.core.runtime .Runtime.run(Runtime.java:93) at io.cucumber.core.cli.Main.run(Main.java:92) at io.cucumber.core.cli.Main.main(Main.java:34) 引起作者:io.cucumber.core.exception.CucumberException:無法為“為測驗生成{custom}”創建黃瓜運算式。看來您沒有注冊引數型別。在 io.cucumber.core.stepexpression 中。copyIntoWithCancel(AbstractPipeline.java:502) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)在 java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) 在 java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.base/java .util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at io.cucumber.core.runtime.Runtime.run(Runtime.java:87) ... 省略了2個常見的幀引起:io.cucumber.cucumberexpressions。 UndefinedParameterTypeException: 未定義的引數型別 {custom}。請為 {custom} 注冊一個 ParameterType。在 io.cucumber.cucumberexpressions.CucumberExpression.processParameters(CucumberExpression.java:103) 在 io.cucumber.cucumberexpressions。
黃瓜版本: 6.8.1
構建工具:Maven
什么會導致問題?
uj5u.com熱心網友回復:
您可以觀察到這種行為的可能原因是有一個叫做“膠水路徑”的東西,它基本上是一個包,Cucumber 在其中查找代碼(包括自定義引數定義)。
默認情況下,cucmber 使用膠水路徑作為包含跑步者類的包。因此,我假設當您在原始專案中使用代碼時,該條件已滿足。
但是,當您創建一個庫并將其用作另一個專案的依賴項時,Cucumber 不再看到這一點,因為不再滿足條件。
您需要像黃瓜檔案中提到的那樣手動指定膠水路徑
默認情況下,Cucumber-JVM 將在 runner 類的包(或子包)中搜索。您還可以明確告訴 Cucumber-JVM 搜索哪些包(和子包),使用:
@CucumberOptions(glue = {"<package>", "<package>", "<etc>"})
public class RunCucumberTest{}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/358660.html
上一篇:Google表格-如果數字旁邊有“.”,則文本功能中的提取和總和數字不起作用
下一篇:使用正則運算式獲取帶邊界的資料
