`
chenxu_8456
  • 浏览: 41891 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

JUnit扩展方式(一)-使用Rule对JUnit进行扩展(JUnit4.10)

阅读更多
在上一篇文章中给出了JUnit4.8中如何使用Rule对JUnit进行扩展,在JUnit4.8中存在一个问题就是不能够使用Rule对于@BeforeClass和@AfterClass进行扩展,在JUnit4.10中JUnit提供了通过Rule对于@BeforeClass和@AfterClass扩展的方式;
在JUnit4.10中MethodRule被声明为过时的,建议使用TestRule替代,同时增加了@ClassRule的声明用于扩展@BeforeClass和@AfterClass
步骤:
1)创建一个新的Rule,该类实现TestRule接口;
2)在测试类中添加@Rule和@ClassRule用于扩展@Before@After和@BeforeClass@AfterClass;
代码如下:
LogRule用于扩展@BeforeClass和@AfterClass:
package extension;

import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

public class LogRule implements TestRule {

	@Override
	public Statement apply(final Statement statement, final Description target) {
		return new Statement() {
			@Override
			public void evaluate() throws Throwable {
				// extend @Before or @BeforeClass
				System.out.println("Before Class Rule: "
						+ target.getClassName());
				statement.evaluate();
				// extend @Before or @BeforeClass
				System.out
						.println("After Class Rule: " + target.getClassName());
			}
		};
	}

}

OperateRule用于扩展@Before和@After:
package extension;

import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

public class OperateRule implements TestRule {

	@Override
	public Statement apply(final Statement base, final Description des) {
		return new Statement() {
			@Override
			public void evaluate() throws Throwable {
				// Before method
				if (des.getAnnotation(BeforeMethod.class) != null) {
					System.out.println(((BeforeMethod) des
							.getAnnotation(BeforeMethod.class)).message());
				}
				base.evaluate();
				// After method
				if (des.getAnnotation(AfterMethod.class) != null) {
					System.out.println(((AfterMethod) des
							.getAnnotation(AfterMethod.class)).message());
				}
			}

		};
	}

}

测试用例类:
package test;

import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;

import extension.AfterMethod;
import extension.BeforeMethod;
import extension.LogRule;
import extension.OperateRule;

public class RuleTestCase {
	
	@ClassRule
	public static LogRule rule = new LogRule();
	
	@Rule
	public OperateRule rule2 = new OperateRule();

	@Test
	@BeforeMethod(message="test_1 before method")
	public void test_1() {
		System.out.println("test_1");
	}
	
	@Test
	@AfterMethod(message="test_2 after method")
	public void test_2() {
		System.out.println("test_2");
	}
	
	@Test
	@BeforeMethod(message="test_3 before method")
	@AfterMethod(message="test_3 after method")
	public void test_3() {
		System.out.println("test_3");
	}
}

执行结果如下:
  • 大小: 25.5 KB
分享到:
评论

相关推荐

    junit4.10下载

    JUnit 4.10 是一个广泛使用的开源Java测试框架,由Ernst Kormann和Kent Beck开发,基于JUnit 3.x版本进行了重大改进。它在软件开发过程中扮演着至关重要的角色,尤其是对于遵循敏捷开发原则的团队。JUnit 4.10是...

    JUnit-4.10.jar

    在实际应用中,JUnit-4.10.jar通常与其他工具结合使用,例如Eclipse或IntelliJ IDEA这样的集成开发环境,它们提供了对JUnit的集成支持,可以方便地运行、调试和查看测试结果。此外,JUnit还可以与Maven或Gradle等...

    junit-4.10.zip

    JUnit作为开源项目,它的源代码可以在GitHub等平台上获取,开发者可以查看源码学习其设计思想和实现方式,也可以根据需要对其进行定制或贡献代码。开源使得JUnit得以持续发展和改进,同时也鼓励社区的参与和协作。 ...

    junit-4.10-src.zip

    本文将深入探讨junit-4.10-src.zip这个源码包,揭示其内部设计与实现机制,帮助读者理解并掌握JUnit的核心原理。 首先,我们要明确的是,JUnit 4.10是JUnit系列的一个重要版本,它引入了注解(Annotation)机制,...

    junit_4.10.rar

    JUnit 4.10对断言库进行了增强,提供了更多的断言方法,如`assertThat()`,它接受一个期望值和实际值,并可以配合各种比较器(Matchers)进行复杂的比较操作。 4. Timeout特性 通过`@Test(timeout = XXX)`注解,...

    junit4.10.zip

    3. **参数化测试**:通过使用@RunWith(Parameterized.class)和@Parameters方法,JUnit 4.10支持参数化的测试,这意味着你可以为同一个测试方法提供多个输入值,从而测试不同的情况。 4. **假设(Assumptions)**:...

    junit-4.10单元测试

    JUnit 4.10 是一个广泛使用的开源Java测试框架,专为进行单元测试而设计。在软件开发过程中,单元测试是验证代码各个独立模块正确性的关键步骤。它可以帮助开发者在早期发现并修复错误,提高代码质量和可靠性。JUnit...

    junit4.10.rar

    `junit4.10`是一个JUnit的特定版本,该版本为4.10,它包含了该框架在该时期的所有功能和改进。 在JUnit 4.10中,有以下几个重要的知识点: 1. **注解(Annotations)**:JUnit 4的一大革新就是引入了注解,使得...

    spring-text-3.2.8和junit4.10

    《Spring测试包与JUnit4.10:深入理解与应用》 在软件开发领域,单元测试是确保代码质量的关键步骤之一。Spring框架以其强大的依赖注入和面向切面编程能力,深受开发者喜爱。而JUnit作为Java语言中最常用的单元测试...

    JUNIT

    JUnit 4.10推荐使用Hamcrest库进行更精确的断言,它的匹配器能提供更清晰、更具表达力的测试语句。 10. **JUnit Runner**: JUnit 4.10允许自定义测试运行器,这为测试执行策略提供了更多的灵活性。例如,可以...

    各种版本的JUnit

    这个压缩包包含的是JUnit的多个历史版本,从4.7到4.12,这些版本在不同时期对JUnit的功能和性能进行了迭代和改进。 JUnit 4.7是2008年发布的一个重要版本,引入了注解(Annotation)的特性,这是对早期基于XML配置...

    Junit的jar包.zip

    JUnit是Java编程领域中最常用的单元测试框架之一,它为开发者提供了一种简洁、高效的方式来编写和执行测试用例,确保代码的质量和稳定性。这个压缩包文件"Junit的jar包.zip"包含的是JUnit 4.10版本的库,允许开发者...

    Junit4 jar包

    5. **参数化测试**:`@Parameters`注解配合`@Test`,允许使用不同参数多次执行同一个测试方法,这在验证方法对各种输入情况的处理上非常有用。 6. **假设测试**:`Assume`类提供了一系列方法,可以在测试开始前检查...

    junit实战第二版

    《JUnit实战第二版》是一本深入探讨Java单元测试框架JUnit的专著,旨在帮助开发者熟练掌握和运用JUnit进行高效、可靠的软件测试。JUnit是Java领域中最广泛使用的单元测试框架之一,它为开发者提供了编写和执行可重复...

    构建复杂项目需要用到的dbrulz-jars.rar

    1. **junit-4.10.jar**:JUnit是一个流行的Java单元测试框架,这里可能是为了在开发和测试过程中验证Drools规则的正确性。 2. **drools-templates-6.5.0.Final.jar**:这个库提供了模板支持,允许开发人员使用动态...

Global site tag (gtag.js) - Google Analytics