zoukankan      html  css  js  c++  java
  • junit单元测试

    现在最新的Junit是Junit4,Junit4最大的亮点就是引入了注解(annotation),通过解析注解就可以为测试提供相应的信息,并抛弃Junit3使用命名约束的方式。

    我们先从Junit3开始

    对于Junit3,有一下的规定和要求

    1. 测试类必须要继承于TestCase父类,必须已Test开头或结尾

    2. 测试方法需要满足如下原则:

    • 测试方法是public类型
    • 测试方法无返回类型,是void的
    • 测试方法无方法参数
    • 测试方法方法名称必须以test开头

    我们看个Junit3测试的例子

     1 public class CalculatorTest extends TestCase
     2 {
     3     private Calculator cal;
     4     
     5     @Override
     6     public void setUp() throws Exception
     7     {
     8         cal = new Calculator();
     9     }
    10     
    11     @Override
    12     public void tearDown() throws Exception
    13     {
    14         
    15     }
    16     
    17     public void testAdd()
    18     {
    19         int result = cal.add(1, 2);
    20         Assert.assertEquals(3, result);
    21     }
    22     
    23     public void testSubtract()
    24     {
    25         int result = cal.subtract(1, 2);
    26         Assert.assertEquals(-1, result);
    27     }
    28 }

      对于要进行测试方法test前后操作,则对setUp(), tearDown()这两个方法进行重写。每进行一个测试用例前后,都会调用setUp(), tearDown()。对伊test case的执行次序如下:

         1  setUp()
         2  testYYY()
         3  tearDown()
         4  setUp()
         5  testXXX()
         6  tearDown()
      实际上:对于测试用例,每执行一个都会new一个新的对象。
      
      对于junit测试我们可以指定文本界面或图形界面来运行,我们需要自己写静态main方法,在main方法中通过调用下面的方法启动不同的运行器。
      1. 启动文本界面
       junit.textui.TestRunner.run(CalculatorTest.class); 

      2. 启动文本图形界面

       junit.swingui.TestRunner.run(CalculatorTest.class); 

      对于Junit3,当需要对多个类或者模块进行测试的时候,我们都会写好每个类的测试用例,然后写一个Suite来将它们串联起来。

     1 public class TestAll extends TestCase
     2 {
     3     public static Test suite()
     4     {
     5         TestSuite suite = new TestSuite();
     6 
     7         suite.addTestSuite(CalculatorTest.class);
     8         suite.addTestSuite(LargestTest.class);
     9         suite.addTestSuite(DeleteAllTest.class);
    10 
    11         suite.addTest(new RepeatedTest(new CalculatorTest("testSubtract"), 20));
    12 
    13         return suite;
    14     }
    15 }

      对于Junit3,通过RepeatedTest可以重复运行某个单个方法,但是对于该测试类,必须增加一个String参数的构造方法。

     1 public class Calculator2Test extends TestCase
     2 {
     3     public void testAdd()
     4     {
     5         try
     6         {
     7             Calculator2 cal2 = new Calculator2();
     8             Class<Calculator2> clazz = Calculator2.class;
     9             Method method = clazz.getDeclaredMethod("add", new Class[] {
    10                     Integer.TYPE, Integer.TYPE });
    11             method.setAccessible(true);
    12             Object result = method.invoke(cal2, new Object[] { 2, 3 });
    13             Assert.assertEquals(5, result);
    14         }
    15         catch (Exception ex)
    16         {
    17             Assert.fail();
    18         }
    19     }
    20 }

     Junit3就到这,下面我们看看Junit4

      JUnit4利用Annotation简化测试用例的编写。不要求必须继承自TestCase。对于类名,方法名也不强制要求,但是实际项目中按照junit3的要求书写,这样便于测试用例的管理。

     

  • 相关阅读:
    基于腾讯开源的msec来进行php开发模块
    《每周一点canvas动画》——圆周运动
    Socket.io+Notification实现浏览器消息推送
    10行 JavaScript 实现文本编辑器
    zzuli2228: 神奇的排名
    HDU2044:一只小蜜蜂...
    zzuli2226:神奇的薯条
    HDU2028:Lowest Common Multiple Plus
    HDU2036:改革春风吹满地
    HDU2029:Palindromes _easy version
  • 原文地址:https://www.cnblogs.com/bffc/p/3730779.html
Copyright © 2011-2022 走看看