- Groovy作为单元测试优势
- Groovy内嵌Junit,不需要引用Junit依赖
- Groovy内嵌 test-case(测试断言场景),添加一个新的断言方法
- Groovy内嵌mock,stub和其他动态类创建功能
- 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