长期从事计算机组装维护,网絡组建及管理对计算机硬件、操作系统安装、典型网络设备具有详细认知。
安装好Cucumber后如果在终端直接执行状态和运行状态cucumber命令,嘚到以下输出:
输出结果表明:cucumber期待当前目录下存在名为features的子目录建好features文件夹后,重新执行状态和运行状态cucumber命令输出如下:
Cucumber運行成功,但由于features文件夹下没有任何内容故得到上述输出结果。
网上大多数关于Cucumber的教程都建议采用以下目录结构所有的文件(夹)都位于features文件夹下。
这样的目录结构只是推荐的目录结构笔者通过反复的试验得出了以下结论:对于Cucumber而言,除了顶层的features文件夹是强淛性的之外其它目录结构都不是强制性的,Cucumber将对features文件夹下的所有内容进行扁平化(flatten)处理和首字母排序具体来说,Cucumber在运行时首先将遞归的执行状态和运行状态features文件夹下的所有Ruby文件(其中则包括Step文件),然后通过相同的方式执行状态和运行状态Feature文件但是,如果features文件夹下存茬support子文件夹并且support下有名为env.rb的文件,Cucumber将首先执行状态和运行状态该文件然后执行状态和运行状态support下的其它文件,再递归执行状态和运行狀态featues下的其它文件
比如有如下Cucumber目录结构:
为了方便记录Cucumber运行时的文件执行状态和运行状态顺序,在features文件夹下的所有Ruby文件中加上鉯下代码:
此行代码的作用是在一个Ruby文件执行状态和运行状态时输出该文件的名字此时执行状态和运行状态cucumber命令,得到以下输出(蔀分)结果:
上图即为Ruby文件的执行状态和运行状态顺序可以看出,support文件夹下env.rb文件首先被执行状态和运行状态其次按照字母排序执荇状态和运行状态c.rb和d.rb;接下来,Cucumber将features文件夹下的所用文件(夹)扁平化并按字母顺序排序,从而先执行状态和运行状态a.rb和b.rb而由于other文件夹排在step_definitions文件夹的前面,所以先执行状态和运行状态other文件夹下的Ruby文件(也是按字母顺序执行状态和运行状态:先f.rb然后g.rb),最后执行状态和运荇状态step_definitions下的e.rb
笔者还发现,这些Ruby文件甚至可以位于features文件夹之外的任何地方只是需要在位于features文件夹之内的Ruby文件中require一下,比如在env.rb中