• 00
  • 00小时
  • 00
  • 00
2023敏捷武林大会-上海站,正火热免费报名中...
Search
Close this search box.

实战groovy -第二部分

享受 GroovyTestCase 的快乐

了解 GroovyTestCase 的能力最好的办法,莫过于实际看到它的效果。在清单 3 中,我已经编写了一个新的 SimpleFilterTest,但是这次我要扩展 GroovyTestCase 来实现它:

清单 3. 一个真正的 GroovyTestCase

import groovy.util.GroovyTestCase

import com.vanward.sedona.frmwrk.filter.impl.SimplePackageFilter

class SimpleFilterTest extends GroovyTestCase {

        

  void testSimpleJavaPackage() {

    fltr = new SimplePackageFilter()

    fltr.setFilter(“java.”)                

    val = fltr.applyFilter(“java.lang.String”)              

    assertEquals(“value should be true”, true, val)

  }     

}

 

请注意,可以通过命令行来运行该测试套件,没有运行基于 Java 的 JUnit 测试套件所需要的 main() 方法。实际上,如果我用 Java 代码编写上面的 SimpleFilterTest,那么代码看起来会像清单 4 所示的那样:

清单 4.  Java 代码编写的同样的测试用例

import junit.framework.TestCase;

import com.vanward.sedona.frmwrk.filter.Filter;

import com.vanward.sedona.frmwrk.filter.impl.SimplePackageFilter;

public class SimplePackageFilterTest extends TestCase {      

   public void testSimpleRegex() {

         Filter fltr = new SimplePackageFilter();

         fltr.setFilter(“java.”);

         boolean val = fltr.applyFilter(“java.lang.String”);

         assertEquals(“value should be true”, true, val);

   }

        

   public static void main(String[] args) {

         junit.textui.TestRunner.run(SimplePackageFilterTest.class);

   }

}

 

用断言进行测试

除了可以让您通过命令行运行测试之外, GroovyTestCase 还向您提供了一些特别方便的 assert 方法。例如, assertArrayEquals,它可以检查两个数据中对应的每一个值和各自的长度,从而断言这两个数据是否相等。从清单 5 的示例开始,就可以看到 Groovy 断言的实际效果,清单 5 是一个简洁的基于 Java 的方法,它把 string 分解成数组。(请注意,我可能使用了 Java 1.4 中新添加的 string 特性编写以下的示例类。我采用 Jakarta Commons StringUtils 类来确保与 Java 1.3 的后向兼容性。)

清单 5. 定义一个 Java StringSplitter 

import org.apache.commons.lang.StringUtils;

public class StringSplitter {

  public static String[] split(final String input, final String separator){

   return StringUtils.split(input, separator);

  }

}

 

清单 6 展示了用 Groovy 测试套件及其对应的 assertArrayEquals 方法对这个类进行测试是多么简单:

清单 6. 使用 GroovyTestCase  assertArrayEquals 方法

import groovy.util.GroovyTestCase

import com.vanward.resource.string.StringSplitter

class StringSplitTest extends GroovyTestCase {

        

  void testFullSplit() {

    splitAr = StringSplitter.split(“groovy.util.GroovyTestCase”, “.”)         

    expect = [“groovy”, “util”, “GroovyTestCase”].toArray()

    assertArrayEquals(expect, splitAr)             

  }     

}

其他方法

Groovy 可以让您单独或成批运行测试。使用 GroovyTestCase 扩展,运行单个测试毫不费力。只要运行 groovy 命令,后面跟着要运行的测试套件即可,如清单 7 所示:

清单 7. 通过 groovy 命令运行 GroovyTestCase 测试用例

$./groovy test/com/vanward/sedona/frmwrk/filter/impl/SimpleFilterTest.groovy

.

Time: 0.047

OK (1 test)

 

Groovy 还提供了一个标准的 JUnit 测试套件,叫作 GroovyTestSuite。只要运行该测试套件,把脚本的路径传给它,它就会运行脚本,就像 groovy 命令一样。这项技术的好处是,它可以让您在 IDE 中运行脚本。例如,在 Eclipse 中,我只是为示例项目建立了一个新的运行配置(一定要选中 “Include external jars when searching for a main class”),然后找到主类groovy.util.GroovyTestSuite,如图 1 所示:

scrumcn1255755045
 1.  Eclipse 运行 GroovyTestSuite

在图 2 中,您可以看到当点击 Arguments 标签,写入脚本的路径时,会发生了什么:

scrumcn1255755066
 2.  Eclipse 中指定脚本的路径

运行一个自己喜欢的 JUnit Groovy 脚本,实在是很简单,只要在 Eclipse 中找到对应的运行配置就可以了。

Search
最新敏捷认证课 ~ 火热报名中
5月18-19日
Leading SAFe领导大规模敏捷认证课
Eric & Scott 授课
5月18-19日
专业Scrum Master (PSM I) 认证公开课
丁志润 Derek Ding 授课
5月25-26日
Scrum Master (CSM) 认证课
Lance Zhang 授课
6月22-23日
Scrum Master (CSM) 认证课
Scott Dunn & Eric Liao授课
6月22-23日
专业Scrum产品负责人(PSPO)认证公开课
丁志润 Derek Ding 授课
分类文章
9月15-17日
SAFe ScrumMaster & Leading SAFe官方认证双证班
Eric Liao & Scott Wang 授课
9月18-22日
SAFe认证-SPC SAFe认证培训师导师班
Kurt Jäger & Eric Liao 授课

预约回电

课程顾问将尽快给您回电
电话咨询 400 696 6280