Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有多个参数的步骤_Java_Cucumber - Fatal编程技术网

Java 具有多个参数的步骤

Java 具有多个参数的步骤,java,cucumber,Java,Cucumber,是否有一种方法将参数分组为一个参数,例如,传递一个生成所有参数的数据结构 e、 g.我希望避免使用参数过多的方法: Scenario Outline: My scenario has too many parameters When I perform my request with these inputs: <param1>, <param2>, <param3>, <param4>, <param5>, <param

是否有一种方法将参数分组为一个参数,例如,传递一个生成所有参数的数据结构

e、 g.我希望避免使用参数过多的方法:

Scenario Outline: My scenario has too many parameters
    When I perform my request with these inputs: <param1>, <param2>, <param3>, <param4>, <param5>, <param6>, <param7>, <param8>, <param9>, <param10>, <param11>
 Examples:
  | param1 | param2 | param3 | param4 | param5 | param6 | param7 | param8 | param9 | param10 | param11 |
  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy   | dummy   |
  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy   | dummy   |
有没有更好的方法来转移这么多的投入


谢谢

在步骤中使用数据表有助于组织这些信息:

Scenario Outline: My scenario has too many parameters
  When I perform my request with the following inputs:
    | Field   | Value     |
    | param1  | <param1>  |
    | param2  | <param2>  |
    | param3  | <param3>  |
    | param4  | <param4>  |
    | param5  | <param5>  |
    | param6  | <param6>  |
    | param7  | <param7>  |
    | param8  | <param8>  |
    | param9  | <param9>  |
    | param10 | <param10> |
    | param11 | <param11> |

Examples:
  | param1 | param2 | param3 | param4 | param5 | param6 | param7 | param8 | param9 | param10 | param11 |
  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy   | dummy   |
  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy  | dummy   | dummy   |

现在,您可以从
中提取参数(请参阅和)。为了某种编译时安全性,您应该能够将表映射到POJO。

更好的方法是将所有这些示例从功能中删除,并将它们下推到步骤定义调用的帮助器方法中

示例表中的每一组示例都应该具有某种意义(否则,为什么它们会出现在第一位!)。您可以使用此方法来确定捕获特定参数组合的名称。然后可以在场景中使用该名称替换参数

希望您可以在这里使用foo、bar和request作为名称来处理我的问题,因为您的示例没有足够重要的内容来提取更好的名称

在这之后,我们将

Scenario: Make a foo request
  When I perform a foo request
这方面的ruby实现(您必须自己翻译成java)是


因此,现在我们已经从您的功能文件中删除了所有这些垃圾,这些文件现在可以专注于描述正在发生的事情及其重要性。此外,所有参数的处理现在都是在代码中完成的,在代码中您有更多的可用功能,可以做一些事情,例如获取一组现有的参数并修改它们,例如
foo\u示例\u参数。除了(param1)

void方法(字符串…参数){}
我如何才能做到这一点?arg'字符串。。。params'是字符串数组,但我们正在尝试发送11个单独的字符串。您知道如何更改步骤以匹配数组吗?为什么不能发送带有逗号分隔值的单个参数。然后将步骤def中的值除以
相应地使用它。嗨,格雷格,谢谢你的回答。在我的示例中,我可以通过向示例部分添加行来运行更多测试,我如何在您建议的解决方案中执行相同的操作?您应该能够将步骤放到现有场景大纲中。让我为cucumber代码添加更多的上下文。@JoãoMatos:我更新了我的答案,提供了更多的上下文。我认为你应该将第一句“更好的方法”替换为“不同的方法”。你的答案很有用,但我不认为它比@Greg的答案更好。我发现将输入作为steps语句的一部分是有益的,因为它以更清晰的方式说明了您的测试到底要做什么。另一方面,在某些情况下,您的建议更有用,例如,我将坚持“更好的方法”原因如下:我认为我的方法更好;我知道核心cucumber团队会同意我的方法更好,因为他们的方法和我的方法一样好;编程中的常识是,具有大量参数的方法是反模式的。但无论如何,谢谢你的评论。
Scenario: Make a foo request
  When I perform a foo request
module RequestStepHelper
  def foo_example_params
    {
      param1: dummy,
      param2: dummy,
      ...
    }
  end

  def perform_request(params : {})
    # process hash to make correct call
    ...
  end
end
World RequestStepHelper

When 'I perform a foo request' do
  perform_request(foo_example_params)
end