spock

Spock是一个Java测试框架,由GradleWare的软件工程师Peter Niederwieser于2008年创建,它可以促进BDD的发展。 利用这个
例如 ,一个故事可以定义为:

Story: Returns go to stockAs a store owner
In order to keep track of stock
I want to add items back to stock when they're returned.Scenario 1: Refunded items should be returned to stock
Given that a customer previously bought a black sweater from me
And I have three black sweaters in stock.
When he returns the black sweater for a refund
Then I should have four black sweaters in stock.Scenario 2: Replaced items should be returned to stock
Given that a customer previously bought a blue garment from me
And I have two blue garments in stock
And three black garments in stock.
When he returns the blue garment for a replacement in black
Then I should have three blue garments in stock
And three black garments in stock.

使用Spock,可以使用给定的相同时间, 格式将测试非常紧密地映射到方案规范。 在Spock中,我们可以将第一种情况实现为:

class SampleSpec extends Specification{def "Scenario 1: Refunded items should be returned to stock"() {given: "that a customer previously bought a black sweater from me"// ... code and: "I have three black sweaters in stock."// ... codewhen: "he returns the black sweater for a refund"// ... codethen: "I should have four black sweaters in stock."// ... code}
}

最好是确保测试方案需求到测试方案实现的准确映射。 如果我们可以输出的语法,我们可以走这条路
给定什么时候,然后从我们的测试。 Spock允许我们通过其扩展框架添加此功能。

因此,假设我们的BA真的很好奇,并且希望开发人员更加放心,他们坚持使用相同的给定时间,格式,并且代码是同步的。 他们希望轻松获得此信息。 开发人员可以通过首先定义此注释来提供此信息

import java.lang.annotation.*
import org.spockframework.runtime.extension.ExtensionAnnotation@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@ExtensionAnnotation(ReportExtension)
@interface LogScenarioDescription {}

接下来是此实现:

import org.apache.log4j.Logger
import org.spockframework.runtime.AbstractRunListener
import org.spockframework.runtime.extension.AbstractAnnotationDrivenExtension
import org.spockframework.runtime.model.FeatureInfo
import org.spockframework.runtime.model.SpecInfoclass LogScenarioDescriptionExtension extends AbstractAnnotationDrivenExtension; {final static Logger logger = Logger.getLogger("scenarioLog." + ReportExtension.class);@Overridevoid visitSpecAnnotation(Report annotation, SpecInfo spec) {spec.addListener(new AbstractRunListener() {@Overridevoid afterFeature(FeatureInfo feature) {if (System.getEnv("logScenarios")) {logger.info("***SCENARIO TEST:*** " + feature.name)for (block in feature.blocks) {logger.info(block.kind);for (text in block.texts) {logger.info(text)}}}}})}
}

然后将其应用于测试

@LogScenarioDescription
class SampleSpec extends Specification{//...

执行测试后,将给出以下输出:

***SCENARIO TEST:*** Scenario 1: Refunded items should be returned to stock
GIVEN
that a customer previously bought a black sweater from me
AND
I have three black sweaters in stock.
WHEN
he returns the black sweater for a refund
THEN
I should have four black sweaters in stock.

使用以下log4j输出到特定的日志文件以进行方案记录:

log4j.rootLogger=INFO, stdoutlog4j.logger.scenarioLog.extension.custom=INFO, scenarioLoglog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%nlog4j.appender.scenarioLog=org.apache.log4j.FileAppender
log4j.appender.scenarioLog.File=logs/scenario.log
log4j.appender.scenarioLog.layout=org.apache.log4j.PatternLayout
log4j.appender.scenarioLog.layout.ConversionPattern=%m%n

现在您有了一个日志文件,您的BA,QA可以读取它! 这有助于建立协作和ATDD的敏捷文化,在此文化中,可以检查已达成一致的测试方案是否已实现。

翻译自: https://www.javacodegeeks.com/2017/07/outputting-given-extending-spock.html

spock

spock_在扩展Spock时输出给定值相关推荐

  1. 在扩展Spock时输出给定值

    Spock是一个Java测试框架,由GradleWare的软件工程师Peter Niederwieser于2008年创建,它可以促进BDD的发展. 利用这个 例如 ,一个故事可以定义为: Story: ...

  2. 安装python扩展库时只能使用pip_安装 Python 扩展库时只能使用 pip 工具在线安装,如果安装不成功就没有别的办法了。_学小易找答案...

    [单选题]关于Python中的复数,下列说法错误的是_________________. [填空题]在Python程序中,导入sys模块后,可以通过列表________________访问命令行参数. ...

  3. 单片机中存储器扩展位地址线怎么算_单片机外部扩展存储器时,分时复用做数据线和低8位地址线的是( )。 (2.0分)_学小易找答案...

    [判断题]数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程() [单选题]单片机的P1口的功能是( ). (2.0分) [单选题]当52单片机应用系统需要扩展外部存储器或其他接口芯片时, ...

  4. Php使用selenium爬虫,selenium,python爬虫_使用selenium爬取网站时输出结果不正确,selenium,python爬虫 - phpStudy...

    使用selenium爬取网站时输出结果不正确 网站链接:http://www.ncbi.nlm.nih.gov/pubmed?term=(%222013%22%5BDate%20-%20Publica ...

  5. Macbook pro 2016/2017 接入扩展坞时断 WIFI 问题的解决办法

    Macbook pro 2016/2017 接入扩展坞时断 WIFI 问题的解决办法 参考文章: (1)Macbook pro 2016/2017 接入扩展坞时断 WIFI 问题的解决办法 (2)ht ...

  6. LPC单片机IO口默认状态、复位状态、未初始化时输出高电平处理

    众所周知,STM32当复位以后,gpio默认是高阻状态,也就是浮空输入. 由STM32切换到LPC1788,发现LPC的IO未初始化时输出高电平,初始化后才能拉低,这样和STM32的设计就不兼容了. ...

  7. 光伏电池组 局部阴影时输出模型 P-U曲线 I-U曲线 simulink实现 MPPT-Model

    光伏电池组 局部阴影时输出模型 P-U曲线 I-U曲线 simulink实现 MPPT-Model P-U曲线 I-U曲线的仿真结果如下所示: D162

  8. C语言学习之编程实现:输入长方形的两个边长a, b和一个整数k。k=1时,输出长方形的周长 l; k=2时 ,输出长方形的面积s;当k=3时 , 输出长方形的周长1和面积s

    C语言学习 编程实现:输入长方形的两个边长a, b和一个整数k.k=1时,输出长方形的周长 l; k=2时 ,输出长方形的面积s;当k=3时 , 输出长方形的周长1和面积s #include < ...

  9. 如何强制ffmpeg编码时输出一个关键帧

    原文地址:http://www.ffmpeg.com.cn/index.php/%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6ffmpeg%E7%BC%96%E7%A0%81 ...

最新文章

  1. Linux 启动详解之init
  2. Visual Studio 2008 每日提示(十四)
  3. jquery 选项卡插件
  4. Perl Learning (5) —— 输入与输出
  5. hadoop的python框架指南_Python之——用Mrjob框架编写Hadoop MapReduce程序(基于Hadoop 2.5.2)...
  6. python operator __gt___Python operator.gt方法代码示例
  7. 安装mysql时出现的缺少msvcr120.dll和msvcp120.dll问题的解决方案
  8. static{}语句块详解
  9. Linux为什么虚拟内存大于物理内存?
  10. MongoDB 基础操作
  11. 通过释放cache内存解决ubuntu死机问题
  12. Spark入门到精通
  13. 【计算机架构】什么是云原生?云原生如何解释?What is cloud native?通俗解释云原生
  14. iOS同时适配iPad横屏和iPhone竖屏
  15. 数据结构与算法Python版之北大慕课笔记(五)
  16. ASP.NET mvcConf Videos Available
  17. 如何安装配置JDK(保姆级完美解决教程+附百度网盘链接)
  18. 平台消息推送是如何实现的
  19. tiup cluster restart
  20. 实现isPrime()函数,参数为整数,要有异常处理,如果是质数返回True,否则返回False

热门文章

  1. 【COCI 2018/2019 Round #2】Kocka
  2. P5956-[POI2017]Podzielno【数学】
  3. P6623-[省选联考2020A卷]树【Trie,树上启发式合并】
  4. POJ2481-Cows【树状数组】
  5. P4564 [CTSC2018]假面(期望)
  6. 2018 ACM ICPC Asia Regional - Seoul B.Cosmetic Survey
  7. 【AC自动机】AC自动机(二次加强版)(luogu 5357)
  8. 2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]
  9. SpringCloud Gateway配置自定义路由404坑
  10. java-- properties总结