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
列作为动态参数。 Scenario
和 Second 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
这仅执行标记有tag1
和tag2
的场景和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
和@AfterSuite
hooks上
Gauge项目模版
Gauge提供的模版可用于引导初始化Gauge项目的过程以及合适的构建依赖工具,webdriver等。
运行下面的命令,列出所有gauge项目可用的模版:
>gauge init --templates
这些模版也可以在Bintray网站Gauge模版处找到。
通过模版初始化Gauge项目
假如您想使用Java编写测试代码以及Selenium作为驱动来初始化Gauge项目。
您可以通过使用java_maven_selenium
gauge模版快速设置此项目,该项目已准备好开始使用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 user
Shopping 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 plugin
或Browse repositories
按钮 - 搜索Gauge,左键点击Gauge然后选择下载和安装
- 确认您打算下载并安装所选插件
- 点击关闭
- 在Setting对话框点击OK,然后重启Intellij IDEA让安装生效
备注:您安装的插件是默认打开的,如果有需要,您可以按照打开与禁用插件的描述来禁用它。
查看此步骤,手动下载和安装插件或者更新插件。
创建一个新的Gauge项目然后开始编写您的测试。
现在探索Gauge Intellij IDEA插件的所有功能!
安装每日版本
每日构建版本在Intellij 插件库也是可用的。
- 按照说明将Nightly渠道添加到Intellij IDEA
- 添加以下存储库URL
创建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
- 输入GroupId:com.thoughtworks.gauge.maven
- 输入Artifactid:gauge-archetype-java
- 输入Version:1.0.1 或者最新版本号
- 为您的项目输入
groupId
和artifactId
- 输入
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对话框中打开
- 使用要传递的参数指定concept名称,例如: say “hello” to “gauge”.
- 从spec文件下拉列表中选择文件名,或者指定相对于项目的新文件名/路径
- 单击确定
- 选中的步骤将会被指定的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