第十七章、groovy单元测试

  • Groovy作为单元测试优势
    1. Groovy内嵌Junit,不需要引用Junit依赖
    2. Groovy内嵌 test-case(测试断言场景),添加一个新的断言方法
    3. Groovy内嵌mock,stub和其他动态类创建功能
    4. Groovy很容易集成Gradle、Maven、IDE工具

1、开始入门

1.1、写测试很简单

  • /**
     * @author liangchen* @date 2020/12/13
     */
    
    // 摄氏度转 华氏温度
    class Converter{
         
        static celsius(fahrenheit) {
         
            (fahrenheit - 32) * 5 / 9
    
        }
    }
    // 验证一个方法是否正确
    assert 20 == Converter.celsius(68)
    assert 35 == Converter.celsius(95)
    assert -17 == Converter.celsius(0).toInteger()
    assert 0 == Converter.celsius(32)
    
    
    

1.2、GroovyTestCase类介绍

  • 本质上是继承了Junit的类,使得测试更加容易使用

1.3、GroovyTestCase使用

  • 直接继承 GroovyTestCase

  • 使用@Test注解

  • 继承 TestCase

  • import groovy.test.GroovyTestCase
    import junit.framework.TestCase
    import org.junit.Test
    
    /**
     * @author liangchen* @date 2020/12/13
     */
    class SimpleUnitTest extends GroovyTestCase {
         
        //直接继承GroovyTestCase ,且方法名需要以test开头
        void testSimple(){
         
            assertEquals("Groovy should add correctly", 2, 1+1)
        }
    }
    
    import static org.junit.Assert.assertEquals
    // 或者不继承GroovyTestCase ,直接使用注解
    class SimpleUnitAnnotationTest{
         
    
        @Test
        void shouldAdd() {
         
            assertEquals("Groovy should add correctly", 2, 1 + 1)
    
        }
    }
    
    
    //或者直接继承TestCase
    class AnotherSimpleUnitTest extends TestCase{
         
    
        void testSimpleAgain(){
         
            assertEquals("should substract correctly too", 2, 3-1)
        }
    }
    

2、Groovy单元测试代码

  • 单元测试代码

    • assertLength
    • assertArrayEquals
    • assertTrue
    • assertEquals
  • package com.jack.groovy.ch17
    
    import groovy.test.GroovyTestCase
    
    /**
     * @author liangchen* @date 2020/12/13
     */
    class _17_2CounterTest extends GroovyTestCase {
         
        static final Integer[] NEG_NUMBERS = [-2, -3, -4]
        static final Integer[] POS_NUMBERS = [4, 5, 6]
        static final Integer[] MIXED_NUMBERS = [4, -6, 0]
    
        private Counter counter
    
        // 初始化
        void setUp(){
         
            counter = new Counter()
        }
    
    
        void testCounterWorks() {
         
            // 大于7 的数字数量
            assertEquals(2, counter.biggerThan([5, 10, 15], 7))
        }
    
        void testCountHowManyFromSampleNumbers(){
         
            check(0, NEG_NUMBERS, -1)
            check(0, NEG_NUMBERS, -2)
            check(2, NEG_NUMBERS, -4)
            check(3, NEG_NUMBERS, -5)
    
            //
            check(0, POS_NUMBERS, 7)
            check(0, POS_NUMBERS, 6)
            check(2, POS_NUMBERS, 4)
            check(3, MIXED_NUMBERS, -7)
            check(2, MIXED_NUMBERS, -1)
        }
    
        //测试输入日期是否改变
        void testInputDataUnchanged(){
         
            def numbers = NEG_NUMBERS.clone()
            def origLength = numbers.size()
            counter.biggerThan(numbers, 0)
            assertLength(origLength, numbers)
            assertArrayEquals( NEG_NUMBERS, numbers)
        }
    
        void testCountHowManyFromSapleStrings() {
         
            check(2, ['Dog', 'Cat', 'Antelope'], 'Bird')
        }
    
        /**
         * 使用了 assertTrue 和 assertContains
         */
        void testInputDataAssumptions(){
         
            
            assertTrue( NEG_NUMBERS.every {
          it < 0 })
            assertTrue(POS_NUMBERS.every {
          it > 0 })
            assertContains 0, MIXED_NUMBERS
            int negCount =0
            int posCount =0
            MIXED_NUMBERS.each 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值