`

Junit4.7之rule

阅读更多
Junit4的变化还是挺大的,在4.7版本中有引入了另一特性,那就是Rule。总的来说,Rule是Junit的一种扩展机制。规则可以很灵活的添加或重新定义每个测试方法或类的行为,测试人员能重新利用或扩展junit提供的规则,也可以定义自己的规则。
http://www.infoq.com/cn/news/2009/07/junit-4.7-rules列举过有关的junit提供的规则或4.7的变化:
    *  TemporaryFolder:测试可以创建文件与目录并且会在测试运行结束后将其删除。这对于那些与文件系统打交道且独立运行的测试来说很有用。其实这个功能不常用,但有时候的确又会用到,Rule本身的定为就是为了那些有着复杂要求的测试而准备的。不过使用起来并不复杂:
 @Rule
	public TemporaryFolder folder = new TemporaryFolder();
	
	@Test
	public void shouldLoadFromPropertiesFile() throws IOException {
		File createdFile= folder.newFile("myfile.txt");
		File createdFolder= folder.newFolder("subfolder");
	}

不过需要注意的是,不能在@Before注释的方法内创建文件或文件夹,如果这样,测试完后,并不会删除相应的文件或文件夹,这也让本人郁闷了一些时间才发现的。

    * ExternalResource:这是一种资源使用模式,它会提前建立好资源并且会在测试结束后将其销毁。这对于那些使用socket、嵌入式服务器等资源的测试来说很有用。
    * ErrorCollector:可以让测试在失败后继续运行并在测试结束时报告所有错误。这对于那些需要验证大量独立条件的测试来说很有用(尽管这本身可能是个“test smell”)。见下:
@Rule
public ErrorCollector collector= new ErrorCollector();
	
	@Test
	public void example() {
		collector.addError(new Throwable("first thing went wrong"));
		collector.addError(new Throwable("second thing went wrong"));
		collector.checkThat(6, is(5));
		collector.checkThat(5, is(4));
	}
	
	@Test
	public void noErrorCollector(){
		Assert.assertThat(6, is(5));
		Assert.assertThat(4, is(5));
	}

正常情况下,测试一旦遇见错误,就会终止测试,像noErrorCollector方法一样,不过example方法就不一样,即使遇见错误,它也会把方法剩下的代码执行完。
    * ExpectedException:可以在测试中指定期望的异常类型与消息。以前已经可以在@Test的expected中指定需要抛出的异常,但是不能验证message,因此此功能得到了进一步的完善,而且此规则可以重复利用。
    * Timeout:为类中的所有测试应用相同的超时时间。
    * Verifier:ErrorCollector之类的Rule的基类,即使验证失败,测试也能通过。
    * TestWatchman:那些观测测试的运行而不会对结果进行修改的Rule的基类。
    * 匹配器(matcher)的一些变化,关于匹配,主要依赖于Hamcrest 1.2,虽然有集成了hamcrest核心的junit混合包,但此包并没有完全集成hamcrest,所以有些方法不能使用,如Assert.assertThat等,所以建议使用junit4.7独立的包,然后再从外部添加hamcrest-all.jar包。
    * 显示超时测试的堆栈信息;这有助于诊断超时的原因。
    * 改进了javadoc并修复了几个bug。

经过4.7版本后,junit的功能得到了进一步的增强,但也开始变得有点复杂了,希望以后还是少添加点功能吧,这样就不用天天关注这些新功能了。
分享到:
评论

相关推荐

    junit4.7及相关教程

    JUnit是Java编程语言中最常用的单元测试框架之一,它在软件开发过程中起着至关重要的作用,确保代码的质量和稳定性。JUnit 4.7是这个框架的一个版本,提供了许多增强的功能和改进,使得测试更加灵活和高效。 JUnit...

    junit4.7

    JUnit 4.7 是一个广泛使用的Java编程语言的单元测试框架,它极大地简化了软件开发中的测试过程。这个版本是JUnit系列的一个重要迭代,引入了许多改进和新特性,旨在提高测试的效率和覆盖率。让我们深入了解一下JUnit...

    junit4.7单元测试

    JUnit 4.7 是一个流行的开源测试框架,主要用于编写和执行Java程序的单元测试。它在软件开发过程中扮演着至关重要的角色,确保代码的质量和稳定性。这个版本的JUnit是在JUnit 4系列的一个更新,带来了许多改进和新...

    junit-4.7.jar包

    JUnit是Java编程语言中最常用的单元测试框架之一,主要用于编写和执行可重复的、自动化测试用例。`junit-4.7.jar`是JUnit 4.7版本的库文件,这个版本发布于2008年,是JUnit系列的一个重要里程碑。在Java开发中,单元...

    junit4.7-SNAPSHOT-20090511-2347.rar

    这个名为"junit4.7-SNAPSHOT-20090511-2347.rar"的压缩包文件包含了JUnit 4.7的一个快照版本,发布日期为2009年5月11日,具体时间是23:47。这个版本可能是一个开发过程中的不稳定版本,"SNAPSHOT"通常表示这是一个...

    JUnit4.7,4.8,4.11包及源码

    JUnit是Java编程语言中最常用的单元测试框架之一,它由Erich Gamma和Kent Beck开发,用于帮助程序员编写可重复运行的测试用例,确保代码的质量。本压缩包包含了JUnit的几个重要版本,包括4.7、4.8和4.11,以及相应的...

    junit-4.7.jar.zip

    JUnit是Java编程语言中最常用的单元测试框架之一,主要用于编写和执行可重复的自动化测试用例。这个"junit-4.7.jar"是JUnit 4.7版本的库文件,它包含了运行Java程序单元测试所需的所有类和方法。在本文中,我们将...

    junit测试包(包含两个版本)

    这个压缩包包含两个版本的JUnit——JUnit3.8.1和JUnit4.7,这两个版本在功能和使用方式上都有所不同。 **JUnit3.8.1** JUnit3是JUnit系列的早期版本,它的主要特点是基于Java 1.4或更早的版本,因此它不支持注解...

    junit-4.12.jar下载

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。这里我们关注的是`junit-4.12.jar`版本,这是一个重要的里程碑,因为它带来了许多改进和新特性。让我们深入...

    各种版本的JUnit

    JUnit是Java编程语言中最常用的单元测试框架之一,它使得开发者能够编写可自动化执行的测试用例,以确保代码的质量和功能的正确性。这个压缩包包含的是JUnit的多个历史版本,从4.7到4.12,这些版本在不同时期对JUnit...

    JUnit Api(英文版)

    7. **规则(Rules)**:JUnit 4.7引入了测试规则,允许在测试执行前后应用自定义的行为,如资源管理或日志记录。 8. **扩展性**:JUnit框架设计为高度可扩展,通过实现`Runner`、`Rule`和`TestRule`接口,开发者...

Global site tag (gtag.js) - Google Analytics