* [https://github.com/getgauge/gauge/releases/tag/v0.9.7](https://github.com/getgauge/gauge/releases/tag/v0.9.7)
* 下载各种系统的gauge版本
* IDEA2017.3.4-Gauge plugins0.3.10-JDK1.8-SDK
* Gauge的基本思想就是通过.spec [或.md](http://或.md) 文件,使用MarkDown语法去规定执行的动作,然后由Java或者其他语言的文件去按照所写的.spec [或者.md](http://或者.md) 文件的顺序去执行Java文件。
* 1、安装
* 进入官网[https://gauge.org/get-started.html](https://gauge.org/get-started.html),选择windows/linux/Mac版本,32/64系统进行下载
* 下载OK后,进行安装,选择插件(报告形式HTML/XML等),还有语言(Java/C等)
* 若安装Java插件失败,则可以使用命令下载 # gauge install java 或 gauge install
* C:\Users\tester>gauge install java
* Failed to install plugin 'java'.
* Reason: Failed to download the plugin. Get https://github-production-release-ass
* et-2e65be.s3.amazonaws.com/25460645/80b33448-f61f-11e7-8acd-e57b7d69344b?X-Amz-A
* lgorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20180227%2Fus-
* east-1%2Fs3%2Faws4_request&X-Amz-Date=20180227T022757Z&X-Amz-Expires=300&X-Amz-S
* ignature=9534aa85bc2dbfd3a3e98eb7dbb0cb7fe8c68089cb6541e2ca5ee3f5b7efd6cd&X-Amz-
* SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filen
* ame%3Dgauge-java-0.6.6-windows.x86.zip&response-content-type=application%2Foctet
* -stream: dial tcp 52.216.64.192:443: connectex: A connection attempt failed beca
* use the connected party did not properly respond after a period of time, or esta
* blished connection failed because connected host has failed to respond.
* C:\Users\tester>gauge install java # 有时候一次就成功了,有时候很多次都不成功,提示如上报错。所以,若安装java/html-report插件时不成功,可以多试几次。
* .......................
* Successfully installed plugin 'java'.
* C:\Users\tester>gauge install
* Compatible version of plugin html-report not found. Installing plugin html-repor
* t...
* .......................
* Successfully installed plugin 'html-report'.
* 问题
* cmd下安装gauge install java / html-report / spectacle 等,一直报错,但是换到IDEA中运行gauge install java ,就成功了
* F:\git\GaugeProject>gauge install spectacle
* .....
* Failed to install plugin 'spectacle'.
* Reason: Failed to download the plugin. local error: tls: bad record MAC
* F:\git\GaugeProject>gauge install spectacle
* ......................
* Successfully installed plugin 'spectacle'.
* Plugin spectacle was successfully added to the project
* 查看Gauge版本 # gauge version 或 gauge -v
* C:\Users\tester\GaugeProject>gauge -v
* Gauge version: 0.9.7
* Commit Hash: bc9784c
* Plugins
* -------
* html-report (4.0.3)
* java (0.6.6)
* screenshot (0.0.1)
* spectacle (0.1.2)
* 初始化插件
* C:\Users\tester>gauge init java
* Downloading java.zip
* ...
* Copying Gauge template java to current directory ...
* Successfully initialized the project. Run specifications with "gauge run specs/"
* 运行用例
* C:\Users\tester>gauge run specs
* Installing required plugins.
* ..................
* # Specification Heading
* ## Vowel counts in single word P P
* ## Vowel counts in multiple word P P
* Successfully generated html-report to => C:\Users\tester\reports\html-report\ind
* ex.html
* Specifications: 1 executed 1 passed 0 failed 0 skipped
* Scenarios: 2 executed 2 passed 0 failed 0 skipped
* Total time taken: 358ms
* cmd下,路径 C:\Users\tester运行gauge install java , gauge run specs等,所有的文件都存放在C:\Users\tester路径下。
* 2、在IDEA中安装Gauge插件
* 2.1 Default Settings - Plugins , 搜索 `gauge`, No plugins found. Search in repositories (点击),进入 `Browser Repositories`, 搜索`gauge`, 选择第一个,点击 "Install", 安装好之后,“Install”变成了“Restart IntelliJ IDEA", 重启即可。
* 有时候直接从IDEA中搜索插件的话,只搜索到了0.3.4老版本,安装不到最新的版本0.3.10,可以到IDEA 仓库下载得到,然后IDEA中现在从本地disk安装即可
* https://plugins.jetbrains.com/plugin/7535-gauge
* 袁阳辉: 下载最新版0.3.10
* 2.2 Idea中,New Project,选择gauge,新建gauge项目,就可以看到自动生成一个gauge demo,在IDEA中的Terminal中执行gauge install spectacle安装插件(或者IDEA中点击install spectacle直接安装),终端中运行gauge run specs(粗略) 或 gauge run --verbose specs (更详细)
* 3、专业术语
* 1\. Specification
* 开始的标志,只能有一个,每个specification至少有一个scenaior
* Specification name
* ==================
* 或者:
* # Specification name
* 2.Scenario
* 特定场景中的一个情节,一个或多个Scenario组成一个Specification,每个Scenario至少包含一个Step
* Scenario name
* ----------------------
* 或者:
* ##scenario name
* 3\. Step
* specification中的一个可执行部分
* 一般的Step ----正常执行的step,包含在Scenario中
* Context step ----在Scenario执行之前执行的操作,在每个Scenario执行之前都会先执行Context Step
* tearDown Step ----在Scenario执行之后执行的操作,在每个Scenario执行之后都会执行 Teardown Step
* * Login into my app
* * Search for "gauge"
* * Search for "gauge-java"
* 4.Tags
* 用于标记specification和Scenario
* specification sp1
* =========
* Tags : spec,login
* Scenario
* -------------
* Tags: scenario,main-page
* 5.cioncept
* 可重用的逻辑组成的单元,写在单独的文件中用于多次使用
* 6.Parameters
* 将参数传递给Java或其他文件
* 静态参数: 使用“param”形式
* check "param" exists
* 动态参数:使用形式
* check exists
* Table参数: 使用|id|name|形式
* |id|name|
* |--|--------|
* |1|tom|
* |2| mike|
* 特殊参数: 使用形式
* prefix: 参数类型 可以使file table等
* value: 参数值
* File:
* * Verify email text is
* * Check if is visible
* CSV:
* * Step that takes a table
* * Check if the following users exist
* 7.Comments
* 备注信息 : 任何没有标记的一行都是注释,备注
* This is a comment
* 8.Image
* ![Alt text](/path/to/img.jpg)
* ![Alt text](/path/to/img.jpg "可选的标题")
* 9.Link
* This is [an example]([http://getgauge.io](http://getgauge.io)"Title") inline link.
* [This link]([http://github.com/getgauge/gauge](http://github.com/getgauge/gauge)) has no title attribute.
* 4、执行项目
* 通过文件执行
* 执行specs文件夹下所有的spec文件
* C:\Users\tester\GaugeProject>gauge run specs # 或 gauge run specs/
* 执行specs文件夹下的example.spec文件
* C:\Users\tester\GaugeProject>gauge run specs/example.spec
* 执行多个文件夹下的所有文件
* gauge run specs-dir1/ specs-dir2/
* 执行多个文件夹下的指定文件
* gauge run specs-dir1/example.spec specs-dir2/example2.spec
* 执行一个特定的Scenario
* gauge specs/example.spec:16
* ## Vowel counts in single word (12-18行:所以随便输入12-18中任意一个数字,都是执行这第一个个scenario,输入12以前的数字,则没有scenario执行)
* ## Vowel counts in multiple word (19行-:所以随便输入19及之后的任意一个数字,都是执行这第二个scenario)
* 执行多个特定的Scenario
* C:\Users\tester\GaugeProject>gauge run --verbose specs/example.spec:12 specs/example.spec:23 (执行这2个scenario)
* 执行的过程中输出日志
* gauge run --verbose specs
* 通过Tags执行
* 如下列specification的Tags
* Login specification
* ===================
* Tags: login, admin, user login
* Successful login scenario
* -------------------------
* Tags: login-success, admin
* failed login scenario
* -------------------------
* Tags: login-failed, admin
* 通过单独的Tag执行
* gauge --tag admin specs带有admin 的所有的Specification或Scenario都会被执行
* 通过多个Tag执行
* gauge --tag "login,admin" specs只有同时有login和admin Tag的Specification或者Scenario才会被执行
* 执行含有空格的Tag
* gauge --tag "user login" specs
* Tag支持与、或、非运算
* !TagA: 执行不含有TagA的Specification或Scenario
* TagA & !TagB: 执行含有TagA但不含TagB的Specification或Scenario
* (TagA & TagB) | TagC: 执行同时含有TagA和TagB或者含有TagC的Specification或Scenario
* (TagA | TagB) & TagC: 执行同时含有TagA和TagC或者TagB和TagC的Specification或Scenario
* Gauge中的钩子(Hook)
* 钩子可以理解为Java中的AOP(Aspect Oriented Programming),把Specification或Scenario当做一个切面,在执行之前和执行之后做一些操作
* Gauge默认会在Scenario执行之后清除缓存,所以会在下个Scenario执行之前创建新的对象,该功能可以在配置中设置清除缓存的等级
* 1.suit hook
* * 作用于所有的specification和scenaior
//在所有的Specification执行之前执行
* @BeforeSuite
* public void BeforeSuite() {
* // Code for before suite
* }
* //在所有的Specification执行之后执行
* @AfterSuite
* public void AfterSuite() {
* // Code for after suite
* }
* 2.specification hook
* * 作用于specification,在摸个指定的specification之前或者之后执行 @BeforeSpec @AfterSpec
* 3.Scenario hook
* * 作用于Scenario 在每个Scenario之前或者之后执行@BeforeScenario @AfterScenario
* 4.step hook
* * 作用于Scenario,在每个scenaior之前或者之后执行@BeforeStep @AfterStep