在扩展Spock时输出给定值
生活随笔
收集整理的這篇文章主要介紹了
在扩展Spock时输出给定值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spock是一個Java測試框架,由GradleWare的軟件工程師Peter Niederwieser于2008年創建,它可以促進BDD的發展。 利用這個
例如 ,一個故事可以定義為:
使用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时输出给定值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈谈Persistent属性
- 下一篇: downie mac版功能特色