天天看点

Java中单元测试中:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解

在junit4中还有的测试注解有:  @beforeclass ,@before,@test,@after,@afterclass

1、其中:@beforeclass,@afterclass是junit4中新添加进去的

2、如果run as --->junit test,运行含有@test注释的方法是,那么所有注解方法都将被执行,所含的执行顺序是:

     @beforeclass ,@before,@test,@after,@afterclass

3、在junit4中,如果测试类继承了testcase类,那么所有的annotation都不会起作用。

4、案例:

package cn.edu.hactcm.testjunit;

import java.util.uuid;

import org.junit.after;

import org.junit.afterclass;

import org.junit.before;

import org.junit.beforeclass;

import org.junit.test;

/**

 * cfms    :computer files management system 

 * version  :1.0 2013-2-19 下午01:26:04

 *

 * 此类用于测试单元测试中的几个方法

 */

public class testjunit {

 private string flag;

 /**

  * 在本类加载前执行,注意的是有关键字:static

  */

 @beforeclass

 public static void testbeforeclass() {

  system.out.println("public static void testbeforeclass()");

 }

  * 在执行目标测试方法testtest()前执行

 @before

 public void testbefore() {

  system.out.println("-------------------------------------");

  system.out.println("public void testbefore()");

  flag = uuid.randomuuid().tostring();

  * 目标测试方法testtest()

 @test

 public void testtest() {

  system.out.println("public void testtest()");

  system.out.println(flag);

  flag = null;

  * 目标测试方法testtest2()

 public void testtest2() {

  system.out.println("public void testtest2()");

  * 在执行目标测试方法testtest()执行

 @after

 public void testafter() {

  system.out.println("public void testafter()");

  * 在本类加载后执行,注意的是有关键字:static

 @afterclass

 public static void testafterclass() {

  system.out.println("public static void testafterclass()");

}

只执行testtest()方法后的结果为:

public static void testbeforeclass()

-------------------------------------

public void testbefore()

public void testtest()

993ea4ea-3626-4caa-9976-07203a8b7475

public void testafter()

null

public static void testafterclass()

第二种写单元测试的方法是:

package cn.com.css.misps.composite.dao.impl;

import static org.junit.assert.fail;

import java.util.list;

import javax.annotation.resource;

import org.junit.runner.runwith;

import org.springframework.test.context.contextconfiguration;

import org.springframework.test.context.junit4.springjunit4classrunner;

import cn.com.css.common.util.dateutil;

import cn.com.css.misps.composite.dao.iindexdao;

import cn.com.css.misps.domain.ttaskstate;

 * @brief indexdaoimpltest.java indexdaoimpl的测试类

 * @attention

 * @author 涂作权

 * @date 2014-1-26

 * @note begin modify by null

@runwith(springjunit4classrunner.class)

@contextconfiguration(locations="classpath:applicationcontext.xml")

public class indexdaoimpltest {

 @resource(name="indexdao")

 private iindexdao indexdao;

 public void testquerylatestissueproduct() {

  list<ttaskstate> taskstates = indexdao.querylatestissueproduct(dateutil.getstarttimeofday(), dateutil.getstarttimeofday(), 10);

  for (ttaskstate taskstate : taskstates) {

   system.out.println(taskstate.getcode());

  }

 public void testqueryproductinfobycodeandlastmaketime() {

  fail("not yet implemented");

 public void testquerytmispsproductpage() {

 public void testqueryfirsttmispsproductpage() {

上面的方式可以用于ssh项目中