- 浏览: 7937150 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
junit中的@classrule,可以在所有类方法开始前进行一些初始化调用,比如创建临时文件,
其中,@ClassRule中指定创建临时文件夹,这是在所有的测试方法前会创建文件夹,并且会在所有测试完成后,递归删除其下的子目录和子文件夹。
@Rule是方法级别的,每个测试方法执行时都会调用被注解的Rule,而@ClassRule是类级别的,在执行一个测试类的时候只会调用一次被注解的Rule
------------------------------------------------------------
再看下其他内置的rule
ExternalResource Rule
ExternalResource 是TemporaryFolder的父类,主要用于在测试之前创建资源,并在测试完成后销毁。
Java代码 收藏代码
File tempFile;
@Rule
public ExternalResource extResource = new ExternalResource() {
//每个测试执行之前都会调用该方法创建一个临时文件
@Override
protected void before() throws Throwable {
tempFile = File.createTempFile("test", ".txt");
}
//每个测试执行之后都会调用该方法删除临时文件
@Override
protected void after() {
tempFile.delete();
}
};
@Test
public void testExtResource() throws IOException {
System.out.println(tempFile.getCanonicalPath());
}
ErrorCollector Rule
ErrorCollector允许我们收集多个错误,并在测试执行完后一次过显示出来
Java代码 收藏代码
@Rule
public ErrorCollector errorCollector = new ErrorCollector();
@Test
public void testErrorCollector() {
errorCollector.addError(new Exception("Test Fail 1"));
errorCollector.addError(new Throwable("fff"));
}
Verifier Rule
Verifier是ErrorCollector的父类,可以在测试执行完成之后做一些校验,以验证测试结果是不是正确
Java代码 收藏代码
String result;
@Rule
public Verifier verifier = new Verifier() {
//当测试执行完之后会调用verify方法验证结果,抛出异常表明测试失败
@Override
protected void verify() throws Throwable {
if (!"Success".equals(result)) {
throw new Exception("Test Fail.");
}
}
};
@Test
public void testVerifier() {
result = "Fail";
}
TestWatcher Rule
TestWatcher 定义了五个触发点,分别是测试成功,测试失败,测试开始,测试完成,测试跳过,能让我们在每个触发点执行自定义的逻辑。
Java代码 收藏代码
@Rule
public TestWatcher testWatcher = new TestWatcher() {
@Override
protected void succeeded(Description description) {
System.out.println(description.getDisplayName() + " Succeed");
}
@Override
protected void failed(Throwable e, Description description) {
System.out.println(description.getDisplayName() + " Fail");
}
@Override
protected void skipped(AssumptionViolatedException e, Description description) {
System.out.println(description.getDisplayName() + " Skipped");
}
@Override
protected void starting(Description description) {
System.out.println(description.getDisplayName() + " Started");
}
@Override
protected void finished(Description description) {
System.out.println(description.getDisplayName() + " finished");
}
};
@Test
public void testTestWatcher() {
/*
测试执行后会有以下输出:
testTestWatcher(org.haibin369.test.RulesTest) Started
Test invoked
testTestWatcher(org.haibin369.test.RulesTest) Succeed
testTestWatcher(org.haibin369.test.RulesTest) finished
*/
System.out.println("Test invoked");
}
TestName Rule
TestName能让我们在测试中获取目前测试方法的名字。
Java代码 收藏代码
@Rule
public TestName testName = new TestName();
@Test
public void testTestName() {
//打印出测试方法的名字testTestName
System.out.println(testName.getMethodName());
package com.jdriven; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import java.io.File; import java.io.IOException; public class JUnitClassRuleTest { @ClassRule public static TemporaryFolder temporaryFolder = new TemporaryFolder(); public static File tempFile; @BeforeClass public static void createTempFile() throws IOException { tempFile = temporaryFolder.newFile("tempFile.txt"); } @Test public void testJUnitClassRule_One() { //Your test should go here, which uses tempFile } @Test public void testJUnitClassRule_Two() { //Your test should go here and uses the same tempFile } }
其中,@ClassRule中指定创建临时文件夹,这是在所有的测试方法前会创建文件夹,并且会在所有测试完成后,递归删除其下的子目录和子文件夹。
@Rule是方法级别的,每个测试方法执行时都会调用被注解的Rule,而@ClassRule是类级别的,在执行一个测试类的时候只会调用一次被注解的Rule
------------------------------------------------------------
再看下其他内置的rule
ExternalResource Rule
ExternalResource 是TemporaryFolder的父类,主要用于在测试之前创建资源,并在测试完成后销毁。
Java代码 收藏代码
File tempFile;
@Rule
public ExternalResource extResource = new ExternalResource() {
//每个测试执行之前都会调用该方法创建一个临时文件
@Override
protected void before() throws Throwable {
tempFile = File.createTempFile("test", ".txt");
}
//每个测试执行之后都会调用该方法删除临时文件
@Override
protected void after() {
tempFile.delete();
}
};
@Test
public void testExtResource() throws IOException {
System.out.println(tempFile.getCanonicalPath());
}
ErrorCollector Rule
ErrorCollector允许我们收集多个错误,并在测试执行完后一次过显示出来
Java代码 收藏代码
@Rule
public ErrorCollector errorCollector = new ErrorCollector();
@Test
public void testErrorCollector() {
errorCollector.addError(new Exception("Test Fail 1"));
errorCollector.addError(new Throwable("fff"));
}
Verifier Rule
Verifier是ErrorCollector的父类,可以在测试执行完成之后做一些校验,以验证测试结果是不是正确
Java代码 收藏代码
String result;
@Rule
public Verifier verifier = new Verifier() {
//当测试执行完之后会调用verify方法验证结果,抛出异常表明测试失败
@Override
protected void verify() throws Throwable {
if (!"Success".equals(result)) {
throw new Exception("Test Fail.");
}
}
};
@Test
public void testVerifier() {
result = "Fail";
}
TestWatcher Rule
TestWatcher 定义了五个触发点,分别是测试成功,测试失败,测试开始,测试完成,测试跳过,能让我们在每个触发点执行自定义的逻辑。
Java代码 收藏代码
@Rule
public TestWatcher testWatcher = new TestWatcher() {
@Override
protected void succeeded(Description description) {
System.out.println(description.getDisplayName() + " Succeed");
}
@Override
protected void failed(Throwable e, Description description) {
System.out.println(description.getDisplayName() + " Fail");
}
@Override
protected void skipped(AssumptionViolatedException e, Description description) {
System.out.println(description.getDisplayName() + " Skipped");
}
@Override
protected void starting(Description description) {
System.out.println(description.getDisplayName() + " Started");
}
@Override
protected void finished(Description description) {
System.out.println(description.getDisplayName() + " finished");
}
};
@Test
public void testTestWatcher() {
/*
测试执行后会有以下输出:
testTestWatcher(org.haibin369.test.RulesTest) Started
Test invoked
testTestWatcher(org.haibin369.test.RulesTest) Succeed
testTestWatcher(org.haibin369.test.RulesTest) finished
*/
System.out.println("Test invoked");
}
TestName Rule
TestName能让我们在测试中获取目前测试方法的名字。
Java代码 收藏代码
@Rule
public TestName testName = new TestName();
@Test
public void testTestName() {
//打印出测试方法的名字testTestName
System.out.println(testName.getMethodName());
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1569方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 2018前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3465info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2232import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 490https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 684public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 607https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 669https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 434https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 5391 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3097微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 614https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1843什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 963本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1360原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 857public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 670在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 937-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 768一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1904介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
在本文中,我们将深入探讨如何在JUnit中利用`@Rule`注解来测试文件和目录,从而提升测试的覆盖率和实用性。 `@Rule`是JUnit框架中的一个重要概念,它允许我们定义自定义的测试规则。这些规则会在测试方法执行前后被...
此外,JUnit4的Rule与`@ClassRule`配合使用,可以应用于整个测试类,而不仅仅是单个测试方法。这对于设置和清理共享资源,比如数据库连接或临时目录,非常方便。 总结来说,JUnit4的Rule机制提供了一种强大的方式来...
JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了编写和运行可重复、可靠的测试用例的工具。这个"junit4测试源码"可能包含了JUnit4框架的源代码,使得用户能够深入理解其内部工作原理,便于...
对于需要延迟执行或者异步测试的情况,JUnit4提供了`@Rule`和`@ClassRule`注解,可以定义自定义的测试规则。例如,`Timeout`规则可以限制测试方法的执行时间,超过设定时间就会导致测试失败。 在Eclipse中运行单元...
自成立以来,JUnit已经成为xUnit家族中最成功的一员,该家族源自Kent Beck开发的sUnit。JUnit主要用于程序员进行白盒测试,即通过对程序内部逻辑结构的深入理解来进行测试。 **特性**: - **断言(Assertion)**:...
例如,`@Rule`和`@ClassRule`注解就用于在测试执行前后注入特定的行为或资源。 其次,JUnit使用了工厂模式,尤其是`TestRule`接口,它定义了一个方法`apply()`,这个方法创建了一个测试监听器,可以在每次测试执行...
`@Rule`和`@ClassRule`可以用来定义自定义的测试规则,如测试失败时的日志记录或资源管理。 在进行参数化测试时,JUnit的`@Parameterized`注解非常有用。它可以将测试数据作为参数传入测试方法,从而实现对多种输入...
对于需要在每个测试之前或之后执行的复杂逻辑,可以使用 `@ClassRule` 和 `@Rule` 注解结合 `ExternalResource` 类实现。 10. **测试注解的继承**: 如果一个类被 `@RunWith` 或其他测试注解标记,那么它的子类将...
8. **测试规则**:理解`@Rule`和`@ClassRule`,如何自定义测试规则,例如使用`TemporaryFolder`规则创建临时文件。 9. **测试辅助方法**:学习如何编写辅助方法,以提高测试代码的可读性和复用性。 10. **Mocking...
测试规则嵌入式mongodb 测试规则嵌入MongoDB是的一个JUnit @ClassRule包装支撑JUnit和斯波克。 在测试开始时它会触发 mongoDb 服务器,当测试结束时它会停止 mongoDb。二进制文件Mavan 示例: < dependency> ...
在Java开发过程中,JUnit是不可或缺的工具,因为它可以帮助找出代码中的错误,提高软件的可靠性。本教程将深入探讨JUnit的基本使用方法和高级特性。 1. **安装与配置** - JUnit通常通过Maven或Gradle等构建工具...
9. `@Rule` 和 `@ClassRule`:这两个注解用于引入自定义的测试规则,比如用于日志记录、资源管理等。 在实际开发中,我们可以通过组合使用这些注解来实现复杂的测试逻辑。例如,可以利用`@BeforeClass`和`@...
总的来说,Elasticsearch-Junit-Rule 是一个强大的工具,它简化了在 Java 项目中使用 JUnit 进行 Elasticsearch 相关测试的流程,提高了开发效率和测试质量。如果你的项目依赖 Elasticsearch,那么这个规则无疑是一...
在更复杂的测试场景中,JUnit 4引入了`@Rule`和`@ClassRule`,允许自定义测试规则,如定时器、数据库事务管理等。JUnit 5进一步扩展了这一功能,引入了更灵活的测试接口和扩展机制。 关于源码,JUnit的源代码清晰且...
2. **规则(Rule)**:JUnit4引入了规则概念,允许用户定义自定义的行为,如资源管理、日志记录等,通过`@ClassRule`或`@Rule`注解应用到测试类或测试方法。 3. **假设(Assumption)**:`Assume`类提供了假设方法...
对于更复杂的测试需求,JUnit还提供了`@Rule`和`@ClassRule`,可以定义自定义的测试规则,如`ExpectedException`规则可以捕获预期的异常。 总之,通过NetBeans的集成,JUnit为Java开发者提供了一个方便、高效的单元...
2. **创建和应用规则**:在JUnit测试类中,通过`@Rule`注解来声明和应用rulz提供的规则,如`@Rule public DatabaseSetupRule dbRule = new DatabaseSetupRule();`,这样每次测试执行前都会自动执行dbRule的逻辑。 3...
`@Rule`和`@ClassRule`注解可以定义自定义的测试规则,例如假设(Assumptions)机制,允许在测试开始前基于某些条件决定是否执行。 8. JUnit与其他工具的集成: - 集成持续集成服务器:如Jenkins、Travis CI等,...
JUnit4是Java开发中最常用的单元测试框架,它是Java领域中进行测试驱动开发(TDD)和行为驱动开发(BDD)的重要工具。本篇文章将深入探讨JUnit4的核心概念、功能和使用方法。 **一、JUnit4简介** JUnit4是对JUnit3的...
`@Rule`和`@ClassRule`可以应用于单个测试或整个测试类。 11. **Mocking and Stubbing**:虽然JUnit本身不包含模拟和桩函数功能,但可以与其他库如Mockito结合使用,以便在测试中隔离依赖。 12. **Extensions**:...