JUnit 介绍及使用

2016-03-30 13:05:38   最后更新: 2016-11-10 17:11:27   访问数量:484




Junit 是一个 java 的单元测试框架,已经成为了最成功的一个单元测试框架了,多数 java 开发环境都已经集成了 JUnit 作为单元测试工具

实现自动的单元测试可以大大地提高开发效率,虽然在编写测试代码时需要消耗很多精力,但是对于整个项目的稳定和健壮还是很值得的

JUnit4 是 Junit 框架有史以来最大的一次改进,主要目标是使用注解特性简化测试用例的编写

 

如果要在 Spring 项目中使用 JUnit,就需要在 pom.xml 中定义依赖:

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency>

 

 

待测试类

package junit; public class Calculate { public int add(int a, int b) { return a + b; } public int minus(int a,int b) { return a - b; } public int div(int a,int b) { return a / b; } }

 

我们编写了一个简单的计算加减的计算器类,接下来,我们为他编写单元测试类

 

Junit4 测试类

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:applicationContext.xml"}) public class CalculateTest { private Calculate cal ; public CalculateTest() { System.out.println("创建了CalculateTest类的实例"); } @Before public void init() throws Exception { cal = new Calculate(); System.out.println("测试方法前调用@Befored"); } @After public void close() throws Exception { System.out.println("测试方法后调用@After"); } @Test public void doAdd() { Assert.assertEquals(cal.add(1, 2), 3); } @Test public void testMinus() { Assert.assertEquals(cal.minus(2, 1), 1); } }

 

 

  • @RunWith 注解指定用于测试的工具类
  • @ContextConfiguration 注解指定测试前需要加载的配置
  • @Before 注解的方法会在测试方法调用前被调用
  • @After 注解的方法会在测试方法调用后被调用
  • @Test 注解的方法就是测试方法
  • @BeforeClass 注解的方法必须是 static void 方法,会在所有测试方法前只执行一次,一般用来初始化公用的重要资源
  • @AfterClass 注解的方法必须是 static void 方法,会在所有测试方法后只执行一次,一般用来释放公共资源
  • @ignore 注解的方法在测试中会被忽略,通常用来放在还未实现的方法测试方法上,如 @lgnore("该方法还没有实现"),在测试脚本执行时,会直接显示:该方法还没有实现

 

Assert.assertEquals 是比较两个参数的值是否相等,如果不相等则会报错,他的三个参数的重载版本提供了多出的第一个 String 参数,当报错时输出第一个 String 参数作为错误信息的一部分

Assert 类是 Junit 提供的断言类,他提供了很多 static 方法用来实现“若XXX则报错”的断言功能:

  1. assertTrue
  2. assertFalse
  3. assertEquals
  4. assertNotNull
  5. assertNull
  6. assertSame
  7. assertNotSame

 

对于上面的计算器类中的 div 方法,有可能抛出除数为零异常,这时,我们需要在测试时期望异常的抛出:

@Test(expected=ArithmeticException.class) public void testDiv() { cal.div(5, 0); }

 

 

我们还可以通过 timeout 参数设置测试方法的最长执行时间,用来限制方法的超时情况

@Test(timeout=1) public void testMinus() { assertEquals(cal.minus(2, 1), 1); }

 

 






技术帖      技术分享      java      framework      spring      测试      junit      单元测试      test     


京ICP备15018585号