【发布时间】:2021-12-28 10:45:47
【问题描述】:
我遇到了一个问题,我的自定义黄瓜配置在同一个测试项目中工作,但在其他测试项目中不能作为依赖项
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 - 异常时 执行泡菜 java.util.concurrent.ExecutionException:io.cucumber.core.exception.CucumberException:可以 不为“为测试生成 {custom}”创建黄瓜表达式。 看来您没有注册参数类型。 在 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) 在 io.cucumber.core.cli.Main.run(Main.java:92) 在 io.cucumber.core.cli.Main.main(Main.java:34) 引起:io.cucumber.core.exception.CucumberException:无法创建黄瓜 “为测试生成 {custom}”的表达式。 看来您没有注册参数类型。 在 io.cucumber.core.stepexpression.StepExpressionFactory.registerTypeInConfiguration(StepExpressionFactory.java:101) 在 io.cucumber.core.stepexpression.StepExpressionFactory.crateExpression(StepExpressionFactory.java:95) 在 io.cucumber.core.stepexpression.StepExpressionFactory.createExpression(StepExpressionFactory.java:61) 在 io.cucumber.core.stepexpression.StepExpressionFactory.createExpression(StepExpressionFactory.java:49) 在 io.cucumber.core.runner.CachingGlue.lambda$prepareGlue$3(CachingGlue.java:244) 在 java.base/java.util.ArrayList.forEach(ArrayList.java:1540) 在 io.cucumber.core.runner.CachingGlue.prepareGlue(CachingGlue.java:243) 在 io.cucumber.core.runner.Runner.runPickle(Runner.java:68) 在 io.cucumber.core.runtime.Runtime.lambda$execute$5(Runtime.java:110) 在 io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:117) 在 io.cucumber.core.runtime.Runtime.lambda$execute$6(Runtime.java:110) 在 java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 在 io.cucumber.core.runtime.Runtime$SameThreadExecutorService.execute(Runtime.java:233) 在 java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) 在 io.cucumber.core.runtime.Runtime.lambda$run$2(Runtime.java:86) 在 java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) 在 java.base/java.util.stream.SliceOps$1$1.accept(SliceOps.java:199) 在 java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1631) 在 java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) 在 java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) 在 java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) 在 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) 在 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.CucumberExpression.(CucumberExpression.java:35) 在 io.cucumber.cucumberexpressions.ExpressionFactory.createExpression(ExpressionFactory.java:34) 在 io.cucumber.core.stepexpression.StepExpressionFactory.crateExpression(StepExpressionFactory.java:88)
黄瓜版本: 6.8.1
构建工具:Maven
什么可能导致问题?
【问题讨论】:
标签: java regex spring cucumber