`
wx1569020408
  • 浏览: 26908 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Using Spock to test Java or Groovy applications

 
阅读更多

Before

Spock是用于groovy项目的单元测试框架,这个框架简单易用,值得推广。

Coding

<dependencies>
	<dependency>
    	<groupId>org.codehaus.groovy</groupId>
    	<artifactId>groovy-all</artifactId>
    	<version>2.4.4</version>
	</dependency>
	<dependency>
    	<groupId>junit</groupId>
    	<artifactId>junit</artifactId>
   	 	<version>4.4</version>
    	<scope>test</scope>
	</dependency>
	<dependency>
   		<groupId>org.spockframework</groupId>
    	<artifactId>spock-core</artifactId>
    	<version>1.0-groovy-2.4</version>
    	<scope>test</scope>
	</dependency>
	<dependency>
    	<groupId>org.spockframework</groupId>
    	<artifactId>spock-spring</artifactId>
    	<version>1.0-groovy-2.4</version>
    	<scope>test</scope>
	</dependency>
</dependencies>
 
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <version>1.5</version>
        </plugin>
    </plugins>
</build>

 

def "test when then expect"() {
        when:
        def x = Math.max(1, 2)

        then:
        x == 2

        //可以简化成下面的
        expect:
        Math.max(1, 2) == 2
    }

    def "test setup or given"() {
//        setup:
//        def stack = new Stack()
//        def elem = "push me"

        //setup 与 given 等价

        given:
        def stack = new Stack()
        def elem = "push me"

        when:
        stack.push(elem)

        then:
        !stack.empty
        stack.size() == 1
        stack.peek() == elem

        when:
        stack.pop()

        then:
        stack.empty

        when:
        stack.pop()

        then:
        //notThrown(EmptyStackException)
        def e = thrown(EmptyStackException)
        e.cause == null
    }

    def "test cleanup"() {
        setup:
        def stack = new Stack()
        def elem = "push me"

        when:
        stack.push(elem)

        then:
        elem == stack.pop()

        cleanup:
        stack = null
        elem = null
    }


    def "HashMap accepts null key"() {
        setup:
        def map = new HashMap()

        when:
        map.put(null, "elem")

        then:
        //thrown(NullPointerException)
        notThrown(NullPointerException)
    }


    def "maximum of two numbers"() {
        expect:
        // exercise math method for a few different inputs
        Math.max(1, 3) == 3
        Math.max(7, 4) == 7
        Math.max(0, 0) == 0
    }

    def "maximum of two numbers2"() {
        expect:
        Math.max(a, b) == c

        where:
        a | b || c
        3 | 5 || 5
        7 | 0 || 7
        0 | 0 || 0
    }

    @Unroll
    def "maximum of #a and #b should be #c"() {
        expect:
        Math.max(a, b) == c

        //Unroll 当成三个方法执行,否则就是在for循环里面执行
        where:
        a | b || c
        3 | 5 || 5
        7 | 0 || 7
        0 | 0 || 0
    }

explain

如上方代码所见,spock每个feature method被划分为不同的block,不同的block处于测试执行的不同阶段,在测试运行时,各个block按照不同的顺序和规则被执行,如下:

package org.spockframework.runtime.model;
public enum BlockKind {
    SETUP,//初始化资源,最前执行(与given等价)
    EXPECT,//期望,等同于assert(assert支持需要运行时配置VMOptions:java -ea)
    WHEN,//与then一起等同于expect
    THEN,//与when一起等同于expect
    CLEANUP,//清理资源,最后执行
    WHERE;//循环跑测试
}

 

spock框架重点就是上面这些block,搞定!!!

转载于:https://my.oschina.net/chenxiaojie/blog/835937

分享到:
评论

相关推荐

    Spock是适合Java和Groovy应用程序的一个测试框架

    Spock 是一个强大的测试框架,尤其适用于Java和Groovy开发者,它为这两种语言的应用程序提供了高效、简洁且富有表达力的测试解决方案。Spock的核心设计理念是通过声明式的方式来编写测试,使得测试代码更加易读、...

    SpringBoot-Gradle-Maven-Java-Groovy

    SpringBoot、Gradle、Maven、Java和Groovy是Java生态系统中的重要组成部分,它们在现代软件开发中扮演着至关重要的角色。这篇详细的知识点解析将深入探讨这些技术及其相互关系。 1. **SpringBoot**: SpringBoot是...

    maven3-junit-spock-testng-mixin:用于同时执行TestNG(Java,Groovy)+ JUnit(Java,Groovy)+ Spock(Groovy)测试用例的Maven3示例项目

    maven3-junit-spock-testng-mixin Maven3示例项目,用于同时执行TestNG(Java,Groovy)+ JUnit(Java,Groovy)+ Spock(Groovy)测试用例。 对于Gradle用户,请参阅 mvn -version: Apache Maven 3.3.9 (bb52d...

    Java Spock test

    尽管它主要使用 Groovy 编写,但由于 Groovy 与 Java 的高度兼容性,使得 Spock 成为了 Java 开发者的一个强大工具。Spock 不仅适用于 Groovy 项目,也适用于纯 Java 项目,因为它可以无缝集成到 Java 项目中。 ###...

    Making Java Groovy源码

    Making Java Groovy Kenneth A. Kousen 1.Easier Java 2.Closures, builders, and metaprogramming 3.Gradle for builds, Spock for testing 4.Groovy frameworks like Grails and Griffon 源码

    spock up and running, java test with spock 两本

    spock up and running, java test with spock 两本,附示例代码地址。spock 是基于groovy的测试框架,吸收了Junit、Groovy、jMock、Scala等众多语言的优点,并采用Groovy作为其语法,代码量少,可读性高,单元测试...

    SpockUnitTestsDemo:使用Spock框架进行Groovy单元测试

    SpockUnitTestsDemo 使用和对Android应用程序进行示例代码。 使用gson进行json解析使用android async进行数据获取使用groovy和Spock框架进行单元测试有关更多详细信息,请参见。

    spock-core-1.3-groovy-2.5.jar

    Spock是针对Java和Groovy应用程序的测试和规范框架。 使它在人群中脱颖而出的是其美丽而富有表现力的规范语言。 由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。 Spock的灵感来自JUnit,...

    Java测试框架Spock.zip

    Spock 是适合 Java 和 Groovy 应用程序的一个测试框架。示例代码:import groovy.sql.Sqlimport spock.lang.*class DatabaseDriven extends Specification { @Shared sql = Sql.newInstance("jdbc:h2:mem:", "org....

    Java.Testing.with.Spock.pdf

    Spock是一个基于Groovy语言的测试框架,但同样适用于Java项目。它以其简洁、强大的语法和易于理解的报告而受到开发者的欢迎。这本书由Konstantinos Kapelonis撰写,并由Luke Daley作序,旨在帮助读者深入理解和熟练...

    java 动态脚本语言 精通 Groovy

    Groovy是一种基于Java平台的动态脚本语言,它在Java开发者中越来越受欢迎,因为它提供了简洁、灵活的语法,以及强大的动态编程能力。Groovy与Java兼容性极佳,可以直接调用Java类库,使得它在Java生态系统中具有广泛...

    spock-core-0.6-groovy-1.8-rc-1.jar

    Spock是针对Java和Groovy应用程序的测试和规范框架。 使它在人群中脱颖而出的是其美丽而富有表现力的规范语言。 由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。 Spock的灵感来自JUnit,...

    spock-core-1.1-groovy-2.4-rc-2.jar

    Spock是针对Java和Groovy应用程序的测试和规范框架。 使它在人群中脱颖而出的是其美丽而富有表现力的规范语言。 由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。 Spock的灵感来自JUnit,...

    Spock Framework Reference Documentation.pdf

    Spock is a testing and specification framework for Java and Groovy applications. What makes it stand

    spock-core-1.0-groovy-2.4.jar

    Spock是针对Java和Groovy应用程序的测试和规范框架。 使它在人群中脱颖而出的是其美丽而富有表现力的规范语言。 由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。 Spock的灵感来自JUnit,...

    spock-unitils-0.7-groovy-2.0.zip

    Spock是一个基于JVM的BDD(行为驱动开发)框架,主要针对Groovy和Java语言,提供了一种简洁的语法来编写测试用例。Unitils则是一个专注于简化单元测试的Java库,它提供了诸如数据库和持久层支持等功能。Groovy是Java...

    Spock - Up and Running

    作者Rob Fletcher将您从Spock基础知识转到高级主题,使用完整的集成示例。 通过本书的过程,您将构建一个简单的Web应用程序 - Squawker,允许用户发布短消息。 您将发现使用Spock的简单易懂的语言编写自动化测试更...

Global site tag (gtag.js) - Google Analytics