zoukankan      html  css  js  c++  java
  • 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;
    /**
     * author    : toto 11111111@qq.com
     * 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();
      System.out.println("-------------------------------------");
     }
     
     /**
      * 目标测试方法testTest()
      */
     @Test
     public void testTest() {
      System.out.println("public void testTest()");
      System.out.println(flag);
      flag = null;
     }
     
     /**
      * 目标测试方法testTest2()
      */
     @Test
     public void testTest2() {
      System.out.println("public void testTest2()");
      System.out.println(flag);
      flag = null;
     }

     /**
      * 在执行目标测试方法testTest()执行
      */
     @After
     public void testAfter() {
      System.out.println("-------------------------------------");
      System.out.println("public void testAfter()");
      System.out.println(flag);
      System.out.println("-------------------------------------");
     }
     
     /**
      * 在本类加载后执行,注意的是有关键字: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.Test;
    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;

     @Test
     public void testQueryLatestIssueProduct() {
      List<TTaskState> taskStates = indexDao.queryLatestIssueProduct(DateUtil.getStartTimeOfDay(), DateUtil.getStartTimeOfDay(), 10);
      for (TTaskState taskState : taskStates) {
       System.out.println(taskState.getCode());
      }
     }

     /**
      * Test method for {@link cn.com.css.misps.composite.dao.impl.IndexDaoImpl#queryProductInfoByCodeAndLastMakeTime(java.lang.String, java.util.Date)}.
      */
     @Test
     public void testQueryProductInfoByCodeAndLastMakeTime() {
      fail("Not yet implemented");
     }

     /**
      * Test method for {@link cn.com.css.misps.composite.dao.impl.IndexDaoImpl#queryTMispsProductPage(int)}.
      */
     @Test
     public void testQueryTMispsProductPage() {
      fail("Not yet implemented");
     }

     /**
      * Test method for {@link cn.com.css.misps.composite.dao.impl.IndexDaoImpl#queryFirstTMispsProductPage(int)}.
      */
     @Test
     public void testQueryFirstTMispsProductPage() {
      fail("Not yet implemented");
     }

    }

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

  • 相关阅读:
    最短路-dij
    链式前向星
    B树、B+树
    C++类
    差分约束
    数位DP
    Markdown编辑器:表格
    git使用笔记
    leetcode 162. 寻找峰值(二分)
    python matplotlib包的安装注意事项:报错——No such file or dir : tmp/matplotlib-xxxxxx
  • 原文地址:https://www.cnblogs.com/zhangtan/p/5750035.html
Copyright © 2011-2022 走看看