【发布时间】:2021-08-27 15:33:40
【问题描述】:
我的 Cucumber 应用程序中有这个步骤定义:
@Then("Client {string} just received {int} {string}")
@Then("Client {string} just received {int} messages, a {string} and a {string}")
public void clientJustReceivedRequestReject(String session, int numMessages, String message, String... additionalMessages) throws InterruptedException{
receiver = new TcpClientReceiver(socketMap.get(session),properties,sessionsList.stream().filter(s->s.getName().equalsIgnoreCase(session)).findFirst().get(), new GlobalStatistics());
List<String> messagesList=new ArrayList<>();
messagesList.add(message);
if (additionalMessages.length > 0) {
Arrays.stream(additionalMessages).forEach(messagesList::add);
}
List<Message> messages=receiver.scanForMutlipleMessages(messagesList,"35");
assertTrue(messages.size()==numMessages);
当我使用 step 运行场景时,Then Client "PC1" just received 2 messages, a "RequestReject" and a "AdminHeartbeat" 测试通过没有问题。但是,如果我使用步骤 Then Client "PC1" just received 1 "RequestReject 运行场景,我会收到以下错误:
io.cucumber.core.exception.CucumberException: Step [Client {string} just received {int} {string}] 在 'com.me.ed.testtool.StepDef.clientJustReceivedRequestReject(java.lang .String,int,java.lang.String,java.lang.String...)'。 但是,小黄瓜步骤有 3 个参数:
- “PC1”
- 1
- “请求拒绝” 步骤文本:客户端“PC1”刚刚收到 1 个“RequestReject” 在 io.cucumber.core.runner.PickleStepDefinitionMatch.arityMismatch(PickleStepDefinitionMatch.java:83) 在 io.cucumber.core.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:42) 在 io.cucumber.core.runner.ExecutionMode$1.execute(ExecutionMode.java:10) 在 io.cucumber.core.runner.TestStep.executeStep(TestStep.java:92) 在 io.cucumber.core.runner.TestStep.run(TestStep.java:64) ...
我该如何解决这个问题,以便我可以有一个不包含可选参数的步骤?
【问题讨论】: