日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在扩展Spock时输出给定值

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在扩展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时输出给定值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。