2016年6月8日21:33:24
http://www.cnblogs.com/nexiyi/p/junit_test_in_order.html
JUnit中按照顺序执行测试方式
很多情况下,写了一堆的test case,希望某一些test case必须在某个test case之后执行。比如,测试某一个Dao代码,希望添加的case在最前面,然后是修改或者查询,最后才是删除,以前的做法把所有的方法都集中到某一个方法去执行,一个个罗列好,比较麻烦。比较幸福的事情就是JUnit4.11之后提供了MethodSorters,可以有三种方式对test执行顺序进行指定,如下:
/**
* Sorts the test methods by the method name, in lexicographic order, with {@link Method#toString()} used as a tiebreaker
*/
NAME_ASCENDING(MethodSorter.NAME_ASCENDING),
/**
* Leaves the test methods in the order returned by the JVM. Note that the order from the JVM may vary from run to run
*/
JVM(null),
/**
* Sorts the test methods in a deterministic, but not predictable, order
*/
DEFAULT(MethodSorter.DEFAULT);
可以小试牛刀一下:
使用DEFAULT方式:
package com.netease.test.junit;
import org.apache.log4j.Logger;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
/**
* User: hzwangxx
* Date: 14-3-31
* Time: 15:35
*/
@FixMethodOrder(MethodSorters.DEFAULT)
public class TestOrder {
private static final Logger LOG = Logger.getLogger(TestOrder.class);
@Test
public void testFirst() throws Exception {
LOG.info("------1--------");
}
@Test
public void testSecond() throws Exception {
LOG.info("------2--------");
}
@Test
public void testThird() throws Exception {
LOG.info("------3--------");
}
}
/*
output:
2014-03-31 16:04:15,984 0 [main] INFO - ------1--------
2014-03-31 16:04:15,986 2 [main] INFO - ------3--------
2014-03-31 16:04:15,987 3 [main] INFO - ------2--------
*/
换成按字母排序
package com.netease.test.junit;
import org.apache.log4j.Logger;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
/**
* User: hzwangxx
* Date: 14-3-31
* Time: 15:35
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestOrder {
private static final Logger LOG = Logger.getLogger(TestOrder.class);
@Test
public void testFirst() throws Exception {
LOG.info("------1--------");
}
@Test
public void testSecond() throws Exception {
LOG.info("------2--------");
}
@Test
public void testThird() throws Exception {
LOG.info("------3--------");
}
}
/*
2014-03-31 16:10:25,360 0 [main] INFO - ------1--------
2014-03-31 16:10:25,361 1 [main] INFO - ------2--------
2014-03-31 16:10:25,362 2 [main] INFO - ------3--------
*/
分享到:
相关推荐
Junit是Java领域广泛使用的单元测试框架,它提供了一套简洁易用的API,便于开发者编写和执行测试。 **Junit测试框架** Junit是开源项目,由Eclipse基金会维护,广泛应用于Java开发环境。它为每个测试用例提供了...
为了控制测试的执行顺序,JUnit4提供了`@FixMethodOrder`和`@Test(order = N)`注解,使得你可以按照指定的顺序执行测试方法。这在某些需要特定执行顺序的场景下很有帮助。 除了基本的测试功能,JUnit4还可以与其他...
6. **测试运行器**:JUnit3默认的运行器会顺序执行所有的测试,如果有测试失败,它会立即停止执行剩余的测试。 下面是一个简单的JUnit3测试示例: ```java import junit.framework.*; public class MyTest ...
默认情况下,JUnit按照方法名的字母顺序执行测试,但通过这个注解可以改变这一行为。 七、异常测试 使用`@Test`注解的`expected`属性,可以指定测试方法应该抛出的异常类型,如果方法没有抛出预期的异常或者抛出了...
- **测试的顺序**:虽然JUnit测试默认无序执行,但可以通过`@FixMethodOrder`控制执行顺序。 7. **总结** JUnit作为Java单元测试的标准工具,其强大的功能和简洁的API使得测试工作变得高效。理解并熟练掌握JUnit...
3. **固定顺序执行测试**:使用`@FixMethodOrder`和`@Test`的`order`参数可以指定测试执行顺序。 4. **参数化测试**:使用`@RunWith(Parameterized.class)`和`@Parameters`可以实现参数化的测试用例。 5. **假对象与...
- **执行测试:** 按照`@Test`标注的方法顺序执行。 - **清理:** 每个测试方法执行后,会运行`@After`标注的方法,最后所有测试结束后,运行`@AfterClass`标注的方法。 ### JUnit进阶 - **异常测试:** 使用`@...
2. **@Test注解**:在JUnit中,`@Test`注解标记在测试方法上,表示这是一个需要执行的测试。如果方法内部抛出了未捕获的异常,那么测试失败;如果方法正常执行完毕,那么测试成功。 3. **断言(Assertions)**:...
JUnit 是一个流行的 Java 测试框架,它使得编写和执行测试用例变得简单和高效。 JUnit 提供了一个平台,允许开发者编写单元测试,即针对代码中的最小可测试单元进行的测试。它支持注解(annotations)来标记测试...
JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有(下列注解标示了单元测试的不同运行阶段执行的代码): @BeforeClass 全局只会执行一次,而且是第一个运行 @Before 在测试方法运行之前运行(每个测试...
总结来说,Junit4 Test 单元测试是 Java 开发中的关键实践,它提供了结构化和自动化的方式来验证代码的正确性,确保软件的质量。掌握 JUnit4 的使用和测试技巧,对于编写健壮、可靠的代码至关重要。通过学习和应用...
5. **固定测试顺序**:Junit 3.8默认按照方法名的字母顺序运行测试,但可通过`@FixMethodOrder`注解指定执行顺序。 6. **测试注解**:如`@Before`和`@After`分别表示在每个测试方法前和后执行的方法,`@BeforeClass...
11. **TestNg兼容性**:JUnit 4.2在某些方面兼容TestNG的特性,比如使用`@Test`注解的`priority`属性设置测试执行顺序。 总的来说,Junit 4.2是一个强大的测试工具,通过其丰富的注解和API,开发者可以编写出结构...
总结来说,JUnit是Java开发中的关键工具,它简化了单元测试的编写和执行,帮助开发者发现和修复代码中的问题,从而提高软件质量。在进行单元测试时,应遵循最佳实践,确保测试的独立性、可读性和全面性,这样才能...
4. 固定的测试顺序:与JUnit 4不同,JUnit 3.8.1中的测试默认按照它们在类中声明的顺序执行,不支持根据注解或其他方式自定义顺序。 5. 测试监听器(Test Listeners):允许开发者创建自定义的监听器来记录测试事件...
7. **依赖注入**:JUnit 4支持依赖注入,便于在测试中模拟依赖对象。 `.CHM`文件是一种Windows的帮助文件格式,包含索引和搜索功能,可以帮助用户快速查找和学习JUnit 4.4和3.8.1的相关文档和教程。有了这个文件,...
此外,文档还探讨了用户代码和扩展的相对执行顺序、状态维护以及扩展中的实用程序。 整个文档内容非常全面,不仅为初学者提供了入门知识,也为高级用户提供了深入的指导,对于想要深入理解JUnit 5的测试框架和扩展...
5. **固定顺序的测试**:`@FixMethodOrder`注解可以确保测试方法按照指定顺序执行。 6. **注解驱动的生命周期**:`@Before`和`@After`定义在每个测试方法前后执行的代码,`@BeforeClass`和`@AfterClass`则是在整个...
- **JUnit Platform**:这是整个JUnit5的基础,负责管理测试引擎和执行测试。 - **JUnit Jupiter**:提供了新的编程模型和API,用于编写和执行基于JUnit5的新特性(如动态测试、重复测试等)。 - **JUnit Vintage**...
- 测试方法以`test`开头,如`testMyMethod`,JUnit会按方法定义的顺序执行。 - 使用断言如`assertXXX`和`fail`来判断测试结果,辅助日志信息可以帮助定位问题。如果方法抛出异常,会被视为错误;断言失败则表示...