关于java:Leetcode刷题之spock单元测试

起因

刷题的时候,写完了代码,总是须要有单元测试验证本人的代码对不对。以前的我比拟蠢,切实main办法外面测试我写的逻辑对不对的。这种写法,耗时不说,一个类外面只能有一个main办法,导致我写另外一题时,就把上一题的单元测试数据丢了,这样很不好。所以举荐下大家用spock做单元测试。

spock的pom文件导入

        <!-- Spock依赖 -->
        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-core</artifactId>
            <version>1.1-groovy-2.4</version>
            <scope>test</scope>
        </dependency>

        <!-- Spock须要的groovy依赖 -->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.4.15</version>
        </dependency>

单元测试流程


在test目录上面,创立groovy文件,我创立了一个SolutionTest

此类须要继承spock的基类Specification,能力有后续的解决性能

全局创立要测试的对象,用def创立测试方法,在外面写测试逻辑即可

运行后会输入测试用例的运行后果

spock语法介绍


一个spock办法由四局部组成

  1. 变量字段:全局定义下测试方法外面须要频繁用到的对象,属性
  2. 测试模板办法:测试方法运行前和运行后执行的办法
    def setupSpec() {}    // runs once -  before the first feature method
    def setup() {}        // runs before every feature method
    def cleanup() {}      // runs after every feature method
    def cleanupSpec() {}  // runs once -  after the last feature method
  1. 测试方法:咱们要测试的代码的主体
  2. 测试帮忙办法:没怎么用过

测试方法书写

def "test count"() {
        given:  //前置参数
        when:   //执行须要测试的代码
        then:   //验证执行后果
        where:  //参数赋予不同值
    }

测试方法次要有四局部组成,性能如备注所示

    def "test count1"() {
        given:
        Solution solution = new Solution()
        when:   // 执行须要测试的代码
        int a = solution.count1(n)
        then:   // 验证执行后果
        a == b
        where:  //n和b的赋值
        n | b
        1 | 1
        2 | 1
    }

下面为举例模板,我在given外面定义我要测试的对象,在when外面,调用了对象外面的计算方法。then外面增加了判断语句,a是后果,b是我预期的后果,两个须要相等那办法的逻辑就没有问题。where外面我给n和b赋值,相当于提供了测试用例。

能够看到执行了两组测试,很是不便。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理