使用groovy做java测试

1、背景

在我的另一篇文章中,结合实践经验,总结了当前阶段企业级开发的一套基于groovy的实用测试环境,本文将进一步说明使用groovy做测试的原因,并详细描述groovy语言支持编写java测试代码的诸多优秀特性,以及使用groovy编写测试过程中数量微小但不得不时刻保持谨慎的“坑”。

不夸张的说,掌握了本文所述的常见“测试”桥段,人人都能成为写测试的高手。但是要完全弄懂,还是需要多看几本groovy书(比如《groovy编程》),或者访问groovy官网里的文档。

2、why groovy

主要有以下几个原因:

  • 在java13普及前,甚至普及后较长的一段时期内,groovy语法依旧更加简单
  • groovy兼容java,二者使用相同的类型系统,兼容性在诸多jvm语言中绝无仅有
  • groovy能够使用java的海量第三方库,这个非常关键,很多工具、框架,如lombok、springboot等,都是即插即用
  • groovy具有一些优秀的特性,能减少编写测试的痛楚
  • groovy提供了更好的API,可以帮助减少代码噪声(less verbose)

简洁的语法

得益于groovy的类型推断特性,以及可选类型(Optional Type)特性,类型将不再像java中那样复杂。

比如,groovy支持更加简单的对象构造语法:

def str = 'a simple string'
assert str.class = String // 不用写成String.class

// 打印利器:GString,再也不用拼接字符串了。
// ${expr},注意GString里是可以使用表达式的
def greeting = 'hello'
def gstr = "GString: ${greeting}"
assert gstr instanceof GString
assert gstr == 'GString: hello' // ==调用了equals,而不是判断引用相等

def num = 1
assert num instanceof int
assert num.class == Integer

又如,groovy对java bean的支持:

@Data // lombok生成了equals、toString等方法
class Person {
   
  String name
  Integer age
}

def p1 = new Person(name:'hx', age: 18)
// 这里p1.name实际是调用了getName方法,并没有破坏封装的原则。
println "person name: ${p1.name}, age: ${p1.age}"

// 造数据利器:map转java bean
def p2 = [name:'hx', age:18] as Person

// 判等利器:注意这里利用了lombok生成的equals方法
assert p1 == p2 

def p3 = p1
assert p3.is(p1) // 判断引用相等

还有不得不说的,groovy闭包的使用:


                
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值