zoukankan      html  css  js  c++  java
  • 【Java】Junit快速入门

    Junit介绍

      JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 

      JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

    Junit简单使用

      1、新建一个普通的maven工程,引入依赖

    1 <dependency>
    2     <groupId>junit</groupId>
    3     <artifactId>junit</artifactId>
    4     <version>4.12</version>
    5 </dependency>

      2、新建一个测试类JunitTest.java,并且写一个无入参,无返回值的普通方法,在方法上加上注解@Test,如下

     1 package com.test.junite;
     2 
     3 import org.junit.Test;
     4 
     5 public class JunitTest {
     6 
     7     @Test
     8     public void testJunit(){
     9         System.out.println("测试Junit,简单使用...");
    10     }
    11 }

      3、测试结果

        

    Junit常用注解

      1、与测试流程相关的4个注解

     1 package com.test.junite;
     2 
     3 import org.junit.After;
     4 import org.junit.AfterClass;
     5 import org.junit.Before;
     6 import org.junit.BeforeClass;
     7 import org.junit.Test;
     8 
     9 public class JunitFlowTest {
    10 
    11     /**
    12      * 1、@BeforeClass修饰的方法会在所有方法被调用前被执行
    13      * 而且该方法是静态的,所有当测试类被加载后接着就会运行它
    14      * 而且在内存中它只会存在一份实例,它比较适合加载配置文件
    15      * 2、@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接
    16      * 3、@Before和@After会在每个测试方法的前后各执行一次
    17      * 
    18      */
    19     
    20     @BeforeClass
    21     public static void setUpBeforeClass() throws Exception {
    22         System.out.println("this is @BeforeClass ...");
    23     }
    24 
    25     @AfterClass
    26     public static void tearDownAfterClass() throws Exception {
    27         System.out.println("this is @AfterClass ...");
    28     }
    29 
    30     @Before
    31     public void setUp() throws Exception {
    32         System.out.println("this is @Before ...");
    33     }
    34 
    35     @After
    36     public void tearDown() throws Exception {
    37         System.out.println("this is @After ...");
    38     }
    39 
    40     @Test
    41     public void test1() {
    42         System.out.println("this is test1 ...");
    43     }
    44     
    45     @Test
    46     public void test2() {
    47         System.out.println("this is test2 ...");
    48     }
    49 
    50 }

        运行结果如下:

          

      2、与@Test相关的

     1 package com.test.junite;
     2 
     3 import static org.junit.Assert.assertEquals;
     4 
     5 import org.junit.Ignore;
     6 import org.junit.Test;
     7 
     8 public class AnnotationTest {
     9 
    10     /**
    11      * @Test:将一个普通的方法修饰成为一个测试方法
    12      *     @Test(expected=XX.class)
    13      *     @Test(timeout=毫秒)
    14      * @BeforeClass:它会在所有方法运行前被执行,static修饰
    15      * @AfterClass:它会在所有方法运行后被执行,static修饰
    16      * @Before:会在每一个测试方法运行前被执行一次
    17      * @After:会在每一个测试方法运行后被执行一次
    18      * @Ignore:所修饰的测试方法会测试运行器被忽略
    19      * @RunWiht:可以更改测试运行器 org.junit.runner.Runner
    20      */
    21     @Test(expected=ArithmeticException.class)
    22     public void testDivide() {
    23         assertEquals(3, 3 / 0);
    24     }
    25     
    26     @Test(timeout=2000)
    27     public void testTimeout() {
    28         while (true) {
    29             System.out.println("run forever ...");
    30         }
    31     }
    32     
    33     @Ignore
    34     @Test
    35     public void testIgnore() {
    36         System.out.println("this is testIgnore ...");
    37     }
    38 }

    Junit测试类编写原则

      1、测试方法必须使用@Test进行修饰

      2、测试方法必须使用public void 进行修饰,不能带任何参数

      3、新建一个源码目录来存放我们的测试代码

      4、测试类的包应该和被测试类保持一致

      5、测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖

      6、测试类使用Test作为类名后缀(非必须)

      7、测试方法使用test作为方法前缀(非必须)

  • 相关阅读:
    UVA-679車的摆放(DFS)
    全排列问题(递归调用)
    STL栈的应用—UVA673
    nefu 84 五指山(扩展欧几里德)
    POJ 1061 青蛙的约会(扩展欧几里德)
    nefu 116 两仪剑法
    nefu 115 斐波那契的整除
    HDU 2099 整除的尾数
    Codeforces Round #339 (Div. 2) B. Gena's Code
    Codeforces Round #339 (Div. 2) A. Link/Cut Tree
  • 原文地址:https://www.cnblogs.com/h--d/p/11415893.html
Copyright © 2011-2022 走看看