在上一篇文章中给出了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
分享到:
相关推荐
JUnit 4.10 是一个广泛使用的开源Java测试框架,由Ernst Kormann和Kent Beck开发,基于JUnit 3.x版本进行了重大改进。它在软件开发过程中扮演着至关重要的角色,尤其是对于遵循敏捷开发原则的团队。JUnit 4.10是...
在实际应用中,JUnit-4.10.jar通常与其他工具结合使用,例如Eclipse或IntelliJ IDEA这样的集成开发环境,它们提供了对JUnit的集成支持,可以方便地运行、调试和查看测试结果。此外,JUnit还可以与Maven或Gradle等...
JUnit作为开源项目,它的源代码可以在GitHub等平台上获取,开发者可以查看源码学习其设计思想和实现方式,也可以根据需要对其进行定制或贡献代码。开源使得JUnit得以持续发展和改进,同时也鼓励社区的参与和协作。 ...
本文将深入探讨junit-4.10-src.zip这个源码包,揭示其内部设计与实现机制,帮助读者理解并掌握JUnit的核心原理。 首先,我们要明确的是,JUnit 4.10是JUnit系列的一个重要版本,它引入了注解(Annotation)机制,...
JUnit 4.10对断言库进行了增强,提供了更多的断言方法,如`assertThat()`,它接受一个期望值和实际值,并可以配合各种比较器(Matchers)进行复杂的比较操作。 4. Timeout特性 通过`@Test(timeout = XXX)`注解,...
3. **参数化测试**:通过使用@RunWith(Parameterized.class)和@Parameters方法,JUnit 4.10支持参数化的测试,这意味着你可以为同一个测试方法提供多个输入值,从而测试不同的情况。 4. **假设(Assumptions)**:...
JUnit 4.10 是一个广泛使用的开源Java测试框架,专为进行单元测试而设计。在软件开发过程中,单元测试是验证代码各个独立模块正确性的关键步骤。它可以帮助开发者在早期发现并修复错误,提高代码质量和可靠性。JUnit...
`junit4.10`是一个JUnit的特定版本,该版本为4.10,它包含了该框架在该时期的所有功能和改进。 在JUnit 4.10中,有以下几个重要的知识点: 1. **注解(Annotations)**:JUnit 4的一大革新就是引入了注解,使得...
《Spring测试包与JUnit4.10:深入理解与应用》 在软件开发领域,单元测试是确保代码质量的关键步骤之一。Spring框架以其强大的依赖注入和面向切面编程能力,深受开发者喜爱。而JUnit作为Java语言中最常用的单元测试...
JUnit 4.10推荐使用Hamcrest库进行更精确的断言,它的匹配器能提供更清晰、更具表达力的测试语句。 10. **JUnit Runner**: JUnit 4.10允许自定义测试运行器,这为测试执行策略提供了更多的灵活性。例如,可以...
这个压缩包包含的是JUnit的多个历史版本,从4.7到4.12,这些版本在不同时期对JUnit的功能和性能进行了迭代和改进。 JUnit 4.7是2008年发布的一个重要版本,引入了注解(Annotation)的特性,这是对早期基于XML配置...
JUnit是Java编程领域中最常用的单元测试框架之一,它为开发者提供了一种简洁、高效的方式来编写和执行测试用例,确保代码的质量和稳定性。这个压缩包文件"Junit的jar包.zip"包含的是JUnit 4.10版本的库,允许开发者...
5. **参数化测试**:`@Parameters`注解配合`@Test`,允许使用不同参数多次执行同一个测试方法,这在验证方法对各种输入情况的处理上非常有用。 6. **假设测试**:`Assume`类提供了一系列方法,可以在测试开始前检查...
《JUnit实战第二版》是一本深入探讨Java单元测试框架JUnit的专著,旨在帮助开发者熟练掌握和运用JUnit进行高效、可靠的软件测试。JUnit是Java领域中最广泛使用的单元测试框架之一,它为开发者提供了编写和执行可重复...
1. **junit-4.10.jar**:JUnit是一个流行的Java单元测试框架,这里可能是为了在开发和测试过程中验证Drools规则的正确性。 2. **drools-templates-6.5.0.Final.jar**:这个库提供了模板支持,允许开发人员使用动态...