spock spring 集成测试框架搭建心得

spock测试框架,使用groovy作为脚本语言,开发出的测试脚本具有优良的阅读性,通过标签结构化测试代码。groovy的语法简洁强大,可以节省很多代码。闭包很强大。Spock的mock和stub功能比junit的mockito、jmock、easymock都要简单好用,在spring maven工程中,spock-spring起到一个桥梁作用,它集成spock和spring test,从而可以在spock测试框架里测试Java bean。

maven 工程结构:测试脚本放在src/test/groovy目录下,在project setting中设置groovy目录为testSources目录

spring 配置文件中声明的bean:

只需在测试类上加注解@ContextConfiguration,spock测试便可access到spring容器,为了验证待测试bean成功注入到spock测试框架中, 我们做如下测试:

@ContextConfiguration(locations = "classpath*:spring-config.xml")
class BaseSpec extends Specification {

}

@Title("跨店铺优惠券测试")
@Subject(CouponWriteService)
class UnionCouponSpec extends BaseSpec {
    @Autowired
    CouponWriteService couponWriteService

    def "验证待测接口成功注入"() {

        expect: "bean 成功注入"
        couponWriteService instanceof CouponWriteService

    }

}


运行测试,如下测试结果,表明待测bean成功注入到spock测试框架

结合spock-reports组件,spock框架可以生成漂亮的测试报告,包含spoc测试注解,标签注释内容等,还可配置在报告中展示测试代码,只需在报告*.properties文件中设置com.athaydes.spockframework.report.showCodeBlocks=true,下面生成的报告是不是很漂亮

报告详细设置可在  META-INF/services/com.athaydes.spockframework.report.IReportCreator.properties 目录下根据需要灵活配置,包括样式、输出目录、工程名称和版本、报告模板等

# Name of the implementation class of the report creator
# Currently supported classes are:
#   1. com.athaydes.spockframework.report.internal.HtmlReportCreator
#   2. com.athaydes.spockframework.report.template.TemplateReportCreator
com.athaydes.spockframework.report.IReportCreator=com.athaydes.spockframework.report.internal.HtmlReportCreator

# Set properties of the report creator
# For the HtmlReportCreator, the only properties available are
# (the location of the css files is relative to the classpath):
com.athaydes.spockframework.report.internal.HtmlReportCreator.featureReportCss=spock-feature-report.css
com.athaydes.spockframework.report.internal.HtmlReportCreator.summaryReportCss=spock-summary-report.css
com.athaydes.spockframework.report.internal.HtmlReportCreator.printThrowableStackTrace=false
com.athaydes.spockframework.report.internal.HtmlReportCreator.inlineCss=true
com.athaydes.spockframework.report.internal.HtmlReportCreator.enabled=true

# exclude Specs Table of Contents
com.athaydes.spockframework.report.internal.HtmlReportCreator.excludeToc=false

# Output directory (where the spock reports will be created) - relative to working directory
com.athaydes.spockframework.report.outputDir=build/spock-reports

# If set to true, hides blocks which do not have any description
com.athaydes.spockframework.report.hideEmptyBlocks=false

# Set the name of the project under test so it can be displayed in the report
com.athaydes.spockframework.report.projectName=

# Set the version of the project under test so it can be displayed in the report
com.athaydes.spockframework.report.projectVersion=Unknown

# Show the source code for each block
com.athaydes.spockframework.report.showCodeBlocks=false

# Set the root location of the Spock test source code (only used if showCodeBlocks is 'true')
com.athaydes.spockframework.report.testSourceRoots=src/test/groovy

# Set properties specific to the TemplateReportCreator
com.athaydes.spockframework.report.template.TemplateReportCreator.specTemplateFile=/templateReportCreator/spec-template.md
com.athaydes.spockframework.report.template.TemplateReportCreator.reportFileExtension=md
com.athaydes.spockframework.report.template.TemplateReportCreator.summaryTemplateFile=/templateReportCreator/summary-template.md
com.athaydes.spockframework.report.template.TemplateReportCreator.summaryFileName=summary.md
com.athaydes.spockframework.report.template.TemplateReportCreator.enabled=true
工程pom文件主要如下配置:
  1. 配置spring 框架依赖,为了spock能使用spring test的ApplicationContext,spring-test.jar必不可少,从而通过注解自动引入待测bean
  2. 配置spock 测试框架相关jar包,spock-core.jar强制引入
  3. 由于spock相对于spring框架是外来户,spock中的内省注解需要引入aspectjrt.jar才能被spring的aop调用
  4. 配置编译、测试、报告等插件
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0

    com.jd.pop.qa.test.api
    api-coupon-test
    1.0-SNAPSHOT
    jar

    api-coupon-test
    http://maven.apache.org

   
        UTF-8
        4.3.9.RELEASE
   

   
       
           
           
           
           
       

       
       
            com.jd.pop.soa.market
            pop-market-center-api
            2.0.5-SNAPSHOT
            test
       

       
       
            org.springframework
            spring-test
            ${springframework.version}
       

       
            org.springframework
            spring-context
            ${springframework.version}
       

       
            org.springframework
            spring-context-support
            ${springframework.version}
       

       
            org.springframework
            spring-beans
            ${springframework.version}
       

       
            org.springframework
            spring-core
            ${springframework.version}
       

       

       
            org.aspectj
            aspectjrt
            1.8.0
       

       
        org.codehaus.groovy
        groovy-all
        2.4.4
        test
       

       
       
            org.spockframework
            spock-core
            1.1-groovy-2.4
            test
       

       
       
            org.spockframework
            spock-spring
            1.1-groovy-2.4
            test
       

       
       
       
            com.athaydes
            spock-reports
            1.3.1
            test
       

       
       
            org.slf4j
            slf4j-api
            1.7.13
            test
       
       
            org.slf4j
            slf4j-simple
            1.7.13
            test
       

   

   
       
           
                org.codehaus.gmavenplus
                gmavenplus-plugin
                1.5
               
                   
                       
                            addTestSources
                           
                            testCompile
                       
                   
               
           
           
                org.apache.maven.plugins
                maven-compiler-plugin
                3.3
               
                    1.8
                    1.8
               
           

           
                org.apache.maven.plugins
                maven-surefire-plugin
                2.18.1
               
                   
                        **/*Test.java
                        **/*Spec.java
                       
                       
                   
               
           
       
   

   

你可能感兴趣的:(测试用例,测试方法)