【发布时间】:2015-07-31 16:44:02
【问题描述】:
我正在处理庞大的代码库,其中功能按域分组并保存在单独的包中。
+服务域
|---+特点
|+step_definitions+销售域
|---+特点
|+step_definitions
但是总有一些通用步骤,我找不到将通用步骤定义保留在一些通用步骤包中的方法。
我想知道的是,是否有办法将所有通用步骤保留在某个通用包中并使我的域包依赖通用步骤包来利用通用步骤。
【问题讨论】:
我正在处理庞大的代码库,其中功能按域分组并保存在单独的包中。
+服务域
|---+特点
|+step_definitions+销售域
|---+特点
|+step_definitions
但是总有一些通用步骤,我找不到将通用步骤定义保留在一些通用步骤包中的方法。
我想知道的是,是否有办法将所有通用步骤保留在某个通用包中并使我的域包依赖通用步骤包来利用通用步骤。
【问题讨论】:
一种方法是设置一个名为 features/support/env.rb 的文件,并在该文件中添加一个“require”语句以包含您每次的常用步骤。例如,该文件可能包含:
require File.join(File.dirname(__FILE__), '..', 'common', 'common_steps')
这样你的 common_steps.rb 每次都会被加载。
env.rb 是每次 Cucumber 运行时要运行的第一个文件。
您是否也听说过泡菜宝石?这可能值得一看,因为它通过将常用步骤放入名为“pickle_steps.rb”的文件中来执行类似的操作。这带有用于测试模型的方便的步骤定义,但不会阻止您编辑该文件并添加您自己的文件。
希望对你有所帮助?
【讨论】:
Cucumber 有一个命令行选项-r,允许您包含特定文件。如果您运行cucumber --help,您可以获得有关所有命令行选项的更多信息。在 ruby 中,您可以将其与 config.yml 文件结合起来,以全局设置黄瓜在项目中的运行方式。但是我怀疑你使用的是java,我不知道这是否适用。如果是这样,您可以在黄瓜邮件列表中询问。
另一种方法是在每个支持目录中放置一个文件,例如ServicesDomain/features/support 和 SalesDomian/features/support 只有一个包含所有常见步骤的 require 语句。 Cucumber 会自动加载features/support 中的所有文件(当它从features/.. 运行时)。
【讨论】: