这里介绍下Groovy中的Unit Test单元测试
UT语法
由于Groovy中已经内置了Junit。故非常适合进行UT单元测试。这里介绍几种常见的进行单元测试语法示例。首先,我们写一个普通的Java类
1 |
|
然后通过Groovy编写UT单元测试。具体地:
第一种:直接继承GroovyTestCase, 且方法名需要以test开头
1 | class HelloWorldTest1 extends GroovyTestCase{ |
第二种:直接继承TestCase, 且方法名需要以test开头
1 | class HelloWorldTest2 extends TestCase { |
第三种:直接使用@Test注解, 方法名可随意
1 | class HelloWorldTest3 { |
Assertion 断言
Groovy中内置了若干断言用于进行单元测试。为了便于演示,这里提供一个Java类用于进行单元测试
1 |
|
assertLength
assertLength用于断言数组长度,示例代码如下所示
1 | class AssertionDemo extends GroovyTestCase{ |
assertArrayEquals
assertArrayEquals用于断言数组长度、内容完全一致
1 | class AssertionDemo extends GroovyTestCase{ |
assertEquals、assertNotSame、assertSame
- assertEquals用于断言内容是否相等
- assertNotSame用于断言两个对象的地址是否不同
- assertSame用于断言两个对象的地址是否相同
1 | class AssertionDemo extends GroovyTestCase{ |
assertToString、assertInspect
- assertToString用于断言对象调用toString方法的结果
- assertInspect用于断言对象调用inspect方法的结果
1 | class AssertionDemo extends GroovyTestCase{ |
shouldFail、shouldFailWithCause
- shouldFail用于断言闭包执行失败, 并抛出指定或任意类型的异常
- shouldFailWithCause用于断言闭包执行失败, 且内部嵌套异常为指定类型异常
1 | class AssertionDemo extends GroovyTestCase{ |
assertTrue、assertFalse、assertNull、assertNotNull
- assertTrue用于断言表达式为真
- assertFalse用于断言表达式为假
- assertNull用于断言对象为null
- assertNotNull用于断言对象不为null
1 | class AssertionDemo extends GroovyTestCase{ |
Test Suite 测试套件
对于多个测试类,我们还可以编写Groovy脚本实现将多个测试类组织到一个Test Suite测试套件当中。为了便于演示,我们先写两个Groovy的测试类,分别如下所示
1 | class IntegerTest extends GroovyTestCase { |
1 | class StringTest extends GroovyTestCase { |
现在我们看看如何将这两个测试类组织到一个测试套件当中,Groovy脚本如下所示
1 | // Groovy 测试套件示例 1 |
对于测试类较多的局面,其还支持路径、文件名匹配的方式添加测试类到测试套件当中。Groovy脚本如下所示
1 | // Groovy 测试套件示例 2 |
上述两个Groovy测试类、两个Groovy脚本的目录结构如下所示
参考文献
- Groovy In Action · 2nd Edition Dierk König、Guillaume Laforge著