Gauge中文文档(4)—Gauge使用

来源:互联网 发布:c语言基本数据类型长度 编辑:程序博客网 时间:2024/03/29 21:15

Gauge是一流的命令行工具,这意味着您可以完全从命令行进行操作。或者如果您更喜欢使用IDE,那么Gauge也可以与多个IDE进行良好的集成。

命令行接口

Gauge具有一流的命令行支持,安装gauge,列出运行支持的子命令/标志。

>gague

这个命令行接口是跨平台的。在GNU/Linux和OSX,你可以使用任意终端,在windows上你可以使用cmd或者Powershell。

help

由于子命令或者标识是通过版本被添加或者被弃用,所以建议通过gauge它本身来获取参考。

>gauge help

创建项目

创建或者初始化项目通过执行:

>gauge init <template>

更多细节,请看如何创建gauge项目。

执行测试

在Gauge项目内,您可以通过调用spec的路径来执行测试。按照惯例,spec存储在项目根目录中的./spec/子目录中。
语法是:

>gauge run [flags] <path-to=specs>

Gauge命令行实用程序允许多种方式执行要执行的spec。用于执行测试的有效路径可以是:包含spec的目录路径或者sepc文件路径或者scenarios路径或者三种的混合。

为执行在已有文件夹specs内的所有用例,使用:

>gauge run specs/

这将给出一个彩色的控制台输出,其中包括执行细节以及执行摘要。

指定场景

可以通过在spec中指定该场景的跨度中的行号来执行spec的单个场景,要执行下列spec中的Admin Login 场景,请使用命令gauge run specs/login_test.spec:4

 Configuration ============= Admin Login ----------- * User must login as "admin" * Navigate to the configuration page

这仅执行在行号4(即login_test.spec中的Admin Login)中存在的场景。在上述spec中,由于跨度,指定行号4-7会执行相同的场景。

也可以选择性的执行多种场景如下:

>gauge run specs/helloworld.spec:4 specs/helloword.spec:7

这些场景也可以属于不同的spec文件。
你也可以指定一个具体的scenario或者scenario列表来执行。要执行scenario,gauge将获取spec文件的路径,后跟冒号和零索引数字(译者注:从0开始的索引)的scenario。
例如:要执行名为spec1.spec的spec文件的第二个scenario,你应该执行:

>gauge run specs/spec1.spec:1

要指定多个scenarios,请添加多个这样的参数。例如,要执行名为spec1.spec的spec文件的第一和第三个scenario,你应该执行:

>gauge run specs/spec1.spec:0 specs/spec1.spec:2

指定目录

你可以指定存储spec文件的一个单独目录,Gauge扫描这个目录,并取出可用的spec文件。
例如:

>gauge run specs/

你也可以指定存储spec文件的多个目录,Gauge扫描所有的目录内可用的spec文件并在一次运行过程中执行它们。
例如:

>gauge run specs-dir1/ specs-dir2/ specs-dir3/

指定文件

你可以指定spec文件的路径,在这种情况下,Gauge仅执行提供的spec文件。
例如:要执行一个单独的spec文件:

>gauge run specs/spec1.spec

或者,执行多个spec文件:

>gauge run specs/spec1.spec specs/spec2.spec specs/spec3.spec

详细报告

默认情况下,在执行测试中,gauge提供spec级别的报告。您可以使用--verbose标志来启用详细的步骤级别报告。例如:

>gauge run --verbose specs/

执行中的错误

spec文件解析错误

如果spec文件不符合预期的语法或者无法解析参数,则会发生这种情况。
例如:

[ParseError] hello_world.spec : line no: 25, Dynamic parameter could not be resolved

spec文件未实现的步骤

如果spec文件包含未用项目编程语言实现的步骤,则会出现验证错误。必须要为执行的spec中的所有步骤提供适当的底层代码实现。
例如:

login.spec:33: Step implementation not found. login with “user” and “p@ssword”

启动语言执行插件失败

如果项目中语言特定插件未安装则执行会失败。

数据驱动执行

  • 在任何步骤前,数据表格以markdown表格格式定义在spec的开头
  • 数据表格应该有标题行,且至少有一行数据
  • 表格中的标题名称,用在有角括号<>的步骤中,用于将数据表中特定列引用为参数
  • 一次执行,每个场景都会执行表格中的每一行数据
  • 表格很容易的在IDE中被创建,使用模版table:<no of columns>,然后点击Tab
  • 表格参数以多标记表格格式编写

示例

Table driven execution======================     |id| name    |     |--|---------|     |1 |vishnu   |     |2 |prateek  |     |3 |navaneeth|Scenario--------* Say "hello" to <name>Second Scenario---------------* Say "namaste" to <name>

在上面的示例,步骤使用数据表格中的name列作为动态参数。
ScenarioSecond Scenario都会首先执行第一行数据1,vishnu,然后连续地执行表格中第二和第三行的值。

执行选中的表格数据行

默认情况下,spec中的场景会针对所有数据表格行运行。可以使用标志--table-rows针对选定的数据表行运行,并指定应执行场景的行号。如果有多个行号,则应以逗号分隔。
例如:

>gauge run --table-rows "1" specs/hello.spec>gauge run --table-rows "1,4,7" specs/hello.spec

针对哪些场景运行,也可以指定表格行范围。
例如:

>gauge run --table-rows "1-3" specs/hello.spec

这将针对表格行1,2,3执行场景。

执行标签

标签允许您快速过滤将要执行的spec和场景。执行标有某些标签的所有specs和场景,使用下面的命令:

>gauge run --tags tag1,tag2 spec

或者

>gauge run --tags "tag1, tag2" specs

这仅执行标记有tag1tag2的场景和spec。

示例:
spec

在上述spec中,如果想要标记有”search”和”admin”的所有场景被执行,使用下列命令:

>gauge run --tags "search & admin" SPEC_FILE_NAME

标签表达式

标签可以通过表达式被选中,例如:

Tags Selects specs/scenarios that !TagA do not have TagA TagA & TagB have both TagA and TagB. TagA & !TagB have TagA and not TagB. TagA | TagB have either TagA or TagB. (TagA & TagB) | TagC have either TagC or both TagA and TagB !(TagA & TagB) | TagC have either TagC or do not have both TagA and TagB (TagA | TagB) & TagC have either [TagA and TagC] or [TagB and TagC]

并行执行

可以并行执行spec以更快的运行测试并分发负载。
这可以通过命令完成:

>gauge run --parallel specs

或者

>gauge run -p specs

这根据机器的核数量创建多个执行流,并在执行者之间分配负载。
并行执行流数量可以通过-n标志指定。
例如:

>gauge run --parallel -n=4 specs

这会创建四个并行执行流。


备注
执行流数量的指定应该是由机器的可用CPU核数量决定,超过此数量可能会导致不良结果。要进行优化,请尝试使用线程执行并行执行(译者注:下一节)。


使用线程并行执行

在并行执行中,每个执行流会启动一个新的工作者进程。这可以通过使用多线程取代进程来优化。这样进行并行执行只有一个工作进程且启动多个线程。
为使用它,设置enable_multithreading环境变量为true。这个属性也可以添加到默认/自定义环境。

enable_multithreading = true

必要条件:

  • 线程安全测试代码
  • 语言执行插件应该支持多线程

备注:目前,这个功能只有 Java语言插件支持。

执行一组spec

spec可以分成组,并且--group-g标志提供执行特定组的功能。
可以通过下面的命令完成:

 >gauge run -n=4 -g=2 specs

上述创建4组(由-n标志提供)spec,并且执行第二个(由-g提供)组。
spec按照字母顺序排序,然后分成组,保证每个组都有相同的spec集合,无论执行多少次。
例如:

>gauge run -n=4 -g=2 specs
>gauge run -n=4 -g=2 specs

上面的两条命令将会执行同样的一组spec。

懒惰分配测试执行您的测试套件

此功能允许您在执行期间动态分配spec给工作流,而不是在执行开始时。
这使得Gauge可以优化您的代理/执行环境的资源。这是有用的,因为某些spec可能需要比其他spec更多的时间,因为它们中的场景数量或者被测功能的性质。
以下命令将在指定数量的流中分配测试:

>gauge run -n=4 --strategy="lazy" specs

或者

>gauge run -n=4 specs

假设您有100个测试用例,您选择运行4个流/核心;在执行期间,懒惰分配将动态地将下一个spec分配给已完成先前执行的流并等待更多工作的流。

懒惰分配测试是默认的行为。

根据需求,另一种叫做eager的策略也是有用的。在这种情况下,100个测试用例在执行之前分发,从而使它们的数量相等。

>gauge run -n=4 --strategy="eager" specs

备注:懒惰策略只有在你未使用-g标志时生效。这是因为分组依赖于开始执行之前测试的分配。结合懒惰策略使用它将不会对您的测试套件执行产生影响。

重新执行一个执行流

spec可以分成组,--group-g提供执行具体组的功能。

可以通过下列命令完成:

>gauge run -n=4 -g=2 specs

上述创建4组(由-n标志提供)spec,并且执行第二个(由-g提供)组。
spec按照字母顺序排序,然后分成组,保证每个组都有相同的spec集合,无论执行多少次。
例如:

>gauge run -n=4 -g=2 specs
>gauge run -n=4 -g=2 specs

上面的两条命令将会执行同样的一组spec。

Hook中的当前执行上下文

  • 要获取有关当前spec,场景,步骤执行的其他信息,可以在hooks方法中添加一个附加的ExecutionContext参数。

Java

  @BeforeScenario  public void loginUser(ExecutionContext context) {    String scenarioName = context.getCurrentScenario().getName();    // Code for before scenario  }  @AfterSpec  public void performAfterSpec(ExecutionContext context) {    Specification currentSpecification = context.getCurrentSpecification();    // Code for after step  }

C#

 This feature is not yet  supported in Gauge-CSharp. Please refer to  https://github.com/getgauge/gauge-csharp/issues/53 for updates.

ruby

  before_spec do |execution_info|      puts execution_info.inspect  end  after_spec do |execution_info|      puts execution_info.inspect  end

基于标签过滤Hooks执行

您可以指定执行hooks可以运行的标签,这将确保hook仅在具有所需标签的场景和spec上运行。

Java

  // A before spec hook that runs when tag1 and tag2  // is present in the current scenario and spec.  @BeforeSpec(tags = {"tag1, tag2"})  public void loginUser() {      // Code forbefore scenario  }  // A after step hook runs when tag1 or tag2  // is present in the currentscenario and spec.  // Default tagAggregation value is Operator.AND.  @AfterStep(tags = {"tag1", "tag2"}, tagAggregation = Operator.OR)  public void performAfterStep() {      // Code for after step  }

C#

  // A before spec hook that runs when tag1 and tag2  // is present in the current scenario and spec.  [BeforeSpec("tag1, tag2")]  public void LoginUser() {      // Code for before scenario  }  // A after step hook runs when tag1 or tag2  // is present in the current scenario and spec.  // Default tagAggregation value is Operator.AND.  [AfterStep("tag1", "tag2")]  [TagAggregationBehaviour(TagAggregation.Or)]  public void PerformAfterStep() {      // Code for after step  }

Ruby

  # A before spec hook that runs when  # tag1 and tag2 is present in the current scenario and spec.  before_spec({tags: ['tag2', 'tag1']}) do      # Code for before scenario  end  # A after step hook runs when tag1 or tag2 is present in the current scenario and spec.  # Default tagAggregation value is Operator.AND.  after_spec({tags: ['tag2', 'tag1'], operator: 'OR'}) do      # Code for after step  end

备注:
标签不能被指定在@BeforeSuite@AfterSuitehooks上


Gauge项目模版

Gauge提供的模版可用于引导初始化Gauge项目的过程以及合适的构建依赖工具,webdriver等。

运行下面的命令,列出所有gauge项目可用的模版:

>gauge init --templates

这些模版也可以在Bintray网站Gauge模版处找到。

通过模版初始化Gauge项目

假如您想使用Java编写测试代码以及Selenium作为驱动来初始化Gauge项目。

您可以通过使用java_maven_seleniumgauge模版快速设置此项目,该项目已准备好开始使用selenium编写测试 。

要使用模版初始化gauge项目,从运行gauge init --templates后展示的名字选择其一然后在初始化gauge项目时将此名作为参数传入。

例如,为创建使用java_maven_selenium模版的gauge项目,你需要运行下面的命令:

>gauge init java_maven_selenium

此模版将maven作为构建工具以及selenium作为webdrvier来创建gauge项目, 这将会下载gauge模版java_maven_selenium然后使用有用的示例代码设置您的项目。

现在,您可以开始编写spec然后执行它们。

步骤别名

多个步骤名称对应相同的实现,所有步骤名称的参数的数量和类型必须与实现上的参数数量想匹配。

用例

可能在一些情况下,在创作spec的时候,您可能希望以不同的方式表达相同的功能,以使得spec更容易阅读。

示例1

User Creation=============Multiple Users--------------* Create a user "user 1"* Verify "user 1" has access to dashboard* Create another user "user 2"* Verify "user 2" has access to dashboard

在名为Multiple Users的场景里,第一和第三步的底层功能是一样的,但是它们的表达是不一样的。这有助于更清楚的传达意图和功能。在这样的情况下,应该使用步骤别名功能,以便您可以在代码级别实践DRY原则,同事确保功能被清楚的表达。

实现

Java

  public class Users {      @Step({"Create a user <user_name>", "Create another user <user_name>"})      public void helloWorld(String user_name) {          // create user user_name      }  }

C#

  public class Users {      [Step({"Create a user <user_name>", "Create another user <user_name>"})]      public void HelloWorld(string user_name) {          // create user user_name      }  }

Ruby

  step 'Create a user ','Create another user ' do |user_name|      // create user user_name  end

示例2

User Creation-------------* User creates a new account* A "welcome" email is sent to the userShopping Cart-------------* User checks out the shopping cart* Payment is successfully received* An email confirming the "order" is sent

在此用例中,两个场景的最后一行(发送邮件)底层功能是一样的,但是使用别名后表达更清楚。底层的步骤实现可能是这样的。

实现

Java

  public class Users {      @Step({"A <email_type> email is sent to the user", "An email confirming the <email_type> is sent"})      public void helloWorld(String email_type) {          // Send email of email_type      }  }

C#

  public class Users {      [Step({"A <email_type> email is sent to the user", "An email confirming the <email_type> is sent"})]      public void HelloWorld(string email_type) {          // Send email of email_type      }  }

Ruby

  step 'A email is sent to the user', 'An email confirming the is sent' do |email_type|      email_service.send email_type  end

失败用例重新运行

Gauge提供仅重新执行上次执行过程中失败场景的功能。失败场景运行可以通过使用gauge标签--failed

假如您运行gauge run specs后3个场景失败了,您通过下面的命令,可以仅仅重新执行失败场景而不是执行所有的场景。

>gauge run --failed

这个命令甚至会设置在您上次运行中提供的标志,例如:如果您已经执行了下列命令:

>gauge run --env="chrome" --verbose specs

并且三个场景在这次运行过程中失败了,gauge run --failed命令设置--env--verbose标志为对应的值然后仅仅执行失败的三个场景。这个情况下gauge run --failed相当于命令:

>gauge run --env="chrome" --verbose specs <path_to_failed_scenarios>

重构

改写步骤

Gauge允许您改写项目中的步骤,改写步骤运行:

>gauge refactor "old step <name>" "new step name"

这里<>用来表示步骤中的参数。参数可以在改写过程中被添加,被移除或者被修改。

这样会修改所有的spec文件以及代码文件(用于支持重构的语言插件)。

示例

假设我们的spec文件有以下步骤:

* create user "john" with id "123"* create user "mark" with id "345"

现在,如果你需要添加一个额外的参数last name在这个步骤里,我们可以执行下面的命令:

>gauge refactor "create user <name> with id <id>" "create user <name> with <id> and last name <watson>"

这将修改所有的spec文件已反映修改。

* create user "john" with id "123" and last name "watson"* create user "mark" with id "345" and last name "watson"

项目结构体

在初始化特定语言的gauge项目时,将使用以下文件创建项目框架:

通用Gauge文件

GAUGE_PROJECT_ROOT环境变量保存创建Gauge项目的路径。

├── env
│ └── default
│ └── default.properties
├── manifest.json
├── specs
│ └── example.spec

Env目录

env目录包含多个环境特定的目录,每个目录都有.property文件,用于定义在特定环境执行期间设置的环境变量。

env/default目录是在项目初始化的时候创建,包含执行过程中设置的默认环境变量。

学习更多关于管理环境的内容。

Specs目录

specs目录包含此项目所有的spec文件,它们是用简单的markdown语法编写的业务层spec。

一个简单的spec示例(example.spec)被建在specs目录中,它易于理解spec的格式。

学习更多关于spec的内容。

manifest文件

manifest.json文件包含spec特定的配置,其中包括项目中所需的插件信息。

项目初始化后,manifest.json文件将具有一下内容:

{  "Language": "<language>",  "Plugins": [    "html-report"  ]}
  • Language:编写测试代码的编程语言,Gauge使用对应的Language runner来执行specs。
  • Plugins:项目所用的Gauge插件,一些插件会在每个Gauge项目中默认被使用。插件可以通过执行下面的命令添加到项目中:
gauge add <plugin-name>

例如:

gauge add xml-report

在运行上面的命令之后,manifest.json文件将会具有以下内容:

{  "Language": "<language>",  "Plugins": [    "html-report",    "xml-report"  ]}

C#项目文件

当创建一个新的Gauge C#项目时,项目中创建的C#特定文件如下:

├── foo.csproj
├── foo.sln
├── manifest.json
├── packages.config
├── StepImplementation.cs

├── env
│ └───default
│└──────default.properties

├───packages
└───< Nuget Package Binaries>
├───Properties
│└──────AssemblyInfo.cs

└───specs
│└──────hello_world.spec

packages.config

nuget.包含Gauge依赖,根据您的项目需要,添加更多依赖到这个列表。

StepImplementation.cs

包含定义在hello_world.spec内的简单步骤的实现。

default.properties

这定义了gauge C#执行插件的默认配置,目前的配置参数是:

  • gauge_reports_dirs - gauge报告目录的路径,应该是相对于项目的目录或者绝对路径。
  • overwrite_reports - 如果在每次执行中gauge报告不允许被覆盖则设置为false,在每次执行中一个新的时间戳目录将被创建,默认情况下这个配置是true。

Java项目文件

Java项目中被创建的具体项目文件有:

 ├── libs └── src        └── test            └── java                  └── StepImplementation.java ├── env        └── default            └── java.properties

libs

包含此项目额外的Java依赖文件

src

Src目录包含具有步骤实现的测试代码的class文件

java.properties

定义了Java运行插件的配置,更多细节请见配置。

Ruby项目文件

Ruby项目中被创建的具体文件有:

├── env│   └── default│       └── ruby.properties└── step_implementations    └── step_implementation.rb

step_implementations 文件夹

包含所有的用ruby编写的步骤实现测试代码.rb文件

ruby.preperties

定义ruby执行插件的配置。

IDE支持

列出的IDE插件可用于gauge,使得编写spec和测试代码更简单。

  • Intellij IDEA
  • Visual Studio

Intellij IDEA

Gauge项目可以通过Intellij Idea创建和执行,插件可以通过JetBrains插件库下载。

此插件目前仅支持Gauge和Java。

安装

插件可通过JetBrains插件库下载安装。

从IDE安装Gauge Intellij IDEA插件步骤:

  • 打开Setting对话(比如 ⌘快捷键)
  • 在左侧窗口中选择Plugins
  • 在Plugins页面打开右侧窗口,点击Install JetBrains pluginBrowse repositories按钮
  • 搜索Gauge,左键点击Gauge然后选择下载和安装
    这里写图片描述
  • 确认您打算下载并安装所选插件
  • 点击关闭
  • 在Setting对话框点击OK,然后重启Intellij IDEA让安装生效

备注:您安装的插件是默认打开的,如果有需要,您可以按照打开与禁用插件的描述来禁用它。

查看此步骤,手动下载和安装插件或者更新插件。

创建一个新的Gauge项目然后开始编写您的测试。

现在探索Gauge Intellij IDEA插件的所有功能!

安装每日版本

每日构建版本在Intellij 插件库也是可用的。

  • 按照说明将Nightly渠道添加到Intellij IDEA
  • 添加以下存储库URL

https://plugins.jetbrains.com/plugins/nightly/7535

创建JAVA项目

  • File - New Project
  • 选择 Gauge
  • 选择项目位置和JAVA SDK
  • 完成

备注:如果 gauge-java未安装,第一次会下载它。

这里写图片描述

使用Gauge-maven-plugin的maven项目

  • File - New Project
  • 选择Maven
  • 选择create from Archetype
  • 选择gauge原型 - com.thoughtworks.gauge.maven
  • 如果com.thoughtworks.gauge.maven原型未被添加,选择Add Archetype

    1. 输入GroupId:com.thoughtworks.gauge.maven
    2. 输入Artifactid:gauge-archetype-java
    3. 输入Version:1.0.1 或者最新版本号

这里写图片描述

  • 为您的项目输入groupIdartifactId
  • 输入Project Name 然后结束
  • 该项目将以批处理模式创建,观察控制台进度
  • 项目创建close and re-open the project后打开自动完成功能
  • 打开auto-import,在File > Settings > Maven > Importing下,选中Import Maven projects automatically勾选框

查看gauge-maven-plugin获取更多使用gauge maven插件的信息。

语法高亮

Gauge Specs采用markdown语法,此插件使得spec,场景,步骤和标签高亮。

未实现的步骤也会高亮。

这里写图片描述

自动完成

当前项目中存在的步骤可以通过调用’*’之后自动完成弹出ctrl+ space来列出。选择一个步骤,插入参数高亮显示,您可以按tab键在参数之间循环并进行编辑。

这里写图片描述

实现步骤

如果您在spec文件中有未实现的步骤,那么它将被注释为’undefined step’。当您的鼠标悬停在步骤上时,会显示一个智能标签。点击智能标签打开快速修复弹出窗口。可以选择实现的目的地(译者注:文件),新类或者现有类的列表。然后,它将生成具有所需注释和参数的步骤。

这里写图片描述

导航

从步骤文本跳转到步骤的实现。

用法:右键点击 -> Go to -> Declaration

格式化

可以使用操作菜单ctrl+shift+a中的spec格式的键盘快捷方式轻松格式化spec文件。

这格式化spec包括表格和步骤的缩进。

执行

  • specs可以通过 右键点击 - > run spec来执行
  • 执行一个目录里的所有spec文件可以通过右键点击 -> run specifications

单场景执行

通过右键点击想要执行的场景然后选择这个场景来执行单个场景。右键点击 -> run -> 场景名

备注:如果右键点击在场景意外的上下文中完成,默认情况下,将执行第一个场景。
这里写图片描述

并行执行

为并行执行多个specs

  • 右键点击在specs目录上然后选择 create specifications选项
  • 在新的运行配置中勾选 In Parallel选项,这将会分发specs的执行,依赖机器拥有的核数量
  • 您也可以指定Number of parallel execution streams(并行执行流数量),这是一个可选项

警告:根据当前系统性能选择并行节点。例如在2核机器上,最多可以选择4个并行流。非常大的数字可能会影响性能。


  • 点击 OK, 现在您可以运行这个新配置来并行执行spec。

调试

调试可以与spec执行相同的方式执行。

  • 右键点击一个spec文件或者specs目录 -> 调试 。执行将在标记的断点处停止。

运行配置

您可以编辑运行配置来修改:

  • 将要执行的场景或者spec文件
  • 对应的执行环境
  • 添加标签过滤此次执行
  • 选择并行执行流

这里写图片描述

更改步骤

  • 右键点击 -> Refactor -> 重命名 在步骤上来更改它
  • 参数将会在更改对话的<>中,它们可以重新排序,移除或者添加新的参数
  • 这个更改将会影响到项目中对应的所有步骤

查找用途

  • 右键点击 -> Find Usages 在步骤或者concept来查看用途

这里写图片描述

提取concept

  • 在编辑器中选择要转化为concept的步骤
  • 在主菜单或者选择的上下文菜单上,选择Refactor| 提取到concept或者按 ⌥⌘C
  • 在提取concept对话框中打开
    1. 使用要传递的参数指定concept名称,例如: say “hello” to “gauge”.
    2. 从spec文件下拉列表中选择文件名,或者指定相对于项目的新文件名/路径
    3. 单击确定
  • 选中的步骤将会被指定的concept名字取代

这里写图片描述

Intellij IDEA Gauge插件具有更多的功能来简化编写specs。

新建spec和concept文件

您可以右键点击specs目录中的任何目录,并创建新的spec或者concept文件,它们将创建一个让您开始(编写)的模版。

这里写图片描述

新建markdown表格

在spec文件或者cpt文件中创建markdown表格是非常简单的,您可以通过事先定义的表格模版指定您需要的表格列数。

例如,创建四列的表格
这里写图片描述

然后在模版中填写列名

这里写图片描述

编写spec标题

要在markdown中编写spec标题,可以使用预定义的标题模版。

这里写图片描述

然后填写模版中spec的标题
这里写图片描述

编写场景标题

使用预定义的场景标题模版是很容易编写markdown格式的场景标题的。
这里写图片描述

然后填写模版中的场景名

这里写图片描述

HTML预览标签

以markdown编写的spec文件可以被作为HTML预览。

这是markdown格式下的spec文件

这里写图片描述

点击编辑器底部的HTML Preview标签,它显示spec文件的HTML等效预览。

这里写图片描述

因为specs是以markdown格式编写,所以它们可以使用任何markdown转HTML的转换器来进行转换成HTML。

Visual Studio

Gauge项目可以通过gauge插件在VS内安装和执行,此插件可以从VS市场安装。

安装

  • 通过 Tools -> Extensions and Updates打开VS扩展管理
  • 找到Visual Studio Gallery 然后搜索 Gauge VS2013
  • 点击download然后选择 Install 选项
  • 重启VS让修改生效

此扩展在VS市场所在

这里写图片描述

创建一个新的Gauge项目

  • 点击 File->New Project
  • 在Visual C#类别下选择Gauge Test Project

这里写图片描述

  • 选择项目位置和项目名称
  • 点击OK

这会创建一个新的Gauge项目,然后添加执行此Gauge项目所需的元数据。

或者,您也可以通过命令行创建一个新项目:

>mkdir <project_name>>cd <project_name>>gauge init csharp

这样会创建可以通过VS打开的<project_name>.sln文件

语法高亮

Gauge Specs文件通过Markdown语法编写,这个插件高亮Specs,场景,步骤和标签。

未实现(译者注:通过代码实现)的步骤也会高亮。

这里写图片描述

自动完成

此插件同VS智能提示挂钩,并引入步骤文本的自动完成。引入的步骤文本是已定义的步骤,已定义的concept和已实现步骤文本的结合。

提示:按ctrl+空格显示智能提示菜单。

这里写图片描述

步骤实现

如果您在spec文件有未实现的步骤,它会有红色下划线高亮。将鼠标悬停在步骤文本的末尾以获取智能标签来实现它。单击智能标签将弹出一个窗口。实现的位置可以选择一个新的类或者已有类的列表。这将会生成具有所需注释和参数的步骤。

这里写图片描述

导航

从步骤文本跳转到它的对应实现。

用法:右键点击 -> Go to Declaration 或者按F12

格式化

Spec文件可以轻易通过右键点击->Format File来格式化。

格式化spec包括表格和步骤的缩进。

使用测试资源管理器执行


备注:有关Unit Test explorer的所有功能,请参阅Unit Test Explorer的MSDN文档。


当您构建测试项目时,所有的测试场景会实现在测试资源管理器上。如果测试资源管理器不可用,选择VS菜单上Test->Windows -> Test Explorer.

这里写图片描述

执行测试

  • 执行所有的场景,选择Run All
  • 执行一个spec文件的所有场景,选择 Run ,然后选择菜单上的分组
  • 执行一个或者多个场景,选择您想执行的但个场景,打开所选场景的上下文菜单,然后选择Run Selected Tests

并行执行测试

如果各个场景没有依赖关系阻止它们以任何顺序执行,请使用工具栏上的 ute_parallel切换按钮打开并行测试执行。

如果您想使用Gauge并行执行请参考命令行并行执行。

测试结果

测试资源管理器窗口顶部的通过/失败栏会随着场景的运行而变化,在运行结束时,如果所有的测试通过,通过失败条都会变为绿色,如果测试失败,则会变为红色。

当您运行,编写并重新运行测试时,测试资源管理器将以失败测试,通过测试,跳过测试和未运行测试的默认组来实现结果。您可以更改测试资源管理器对您的测试进行分组的方式 。您可以从测试资源管理器工具栏执行大量的查找,组织和运行测试的工作。

这里写图片描述

特点

按spec组合的场景,定义的标签。(真的没看懂,如果您也没看懂,请看原文,如果看懂了,麻烦告诉我!)

查询和过滤测试列表

测试资源管理器可以用作如VS文档中提到的查找和过滤测试列表功能。

调试

调试可以以spec执行同样的方式来执行。

在测试资源管理器的某个场景上操作右键点击->Debug Selected Tests,执行将在标记的断点处停止。

更改步骤

  • 在步骤上操作 右键点击->Rename 来更改它
  • 参数可以被重新排序,移除,或者添加新的参数
  • 此更改会影响此项目中所有的specs

查找用处

在步骤上操作右键点击->Find all References

创建spec和concept文件

  • 您可以右键点击spec目录或者任何嵌套目录,选择add->New Item -> 找到Visual C# Items下的Gauge
  • 选择Specification或者concept文件类型
  • 输入文件名然后点击Add

这里写图片描述

原创粉丝点击