JUnit单元测试

第一部分:单元测试含义

单元测试就是编写的一段代码,用于检验目标代码的一个功能模块是否正确,就是对代码功能是否达到要求的测试。html

利用单元测试能够使得不少工做变得方便起来,没必要启动重复而又繁杂的服务。
 

第二部分:JUnit的概念

JUnit是一个Java语言的单元测试框架。 JUnit有它本身的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit做为单元测试的工具。java

JUnit用于编写和运行可重复的测试。用于单元测试框架体系xUnit的一个实例(用于java语言)。
它的特色以下:
  1. 用于测试指望结果的断言(Assertion)
  2. 用于共享共同测试数据的测试工具
  3. 用于方便的组织和运行测试的测试套件
  4. 图形和文本的测试运行器

第三部分:JUnit4.x

现阶段不少人都会使用JUnit4.x版原本进行单元测试。app

JUnit4.x中拥有多个经常使用注解:框架

  • @Before 在测试方法运行前运行
  • @BeforeClass 全局仅执行一次,且第一个运行
  • @After 在测试方法运行后容许
  • @AfterClass 全局仅执行一次,且最后一个运行
  • @Ignore 忽略此方法
  • @Test 测试方法

第四部分:在eclipse上使用

 1.建立一个JUnitTest的项目,再写一个叫作CeShi的类(测试)。eclipse

public class CeShi {

    private static int result; 
    public  void add(int n) {
        result = result + n;        //这个是正确的
    }
    public void minus(int n) {
        result = result + 10086;        //明显是错误的
    }
    public int getResult(){
        return result;
    }

}

 

2.将JUnit4导入项目中。ide

右击项目选择最下面的Properties(属性)工具

 3.生成测试框架。单元测试

在CeShi.java上右击,创造新的JUnit Test Case。测试

next后选择CeShi中写出来的两个方法spa

 

结束后自动生成了一个新类,叫CeShiTest

4.修改CeShiTest的代码。

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class CeShiTest {
    private static CeShi ceshi = new CeShi();

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testAdd() {
        ceshi.add(3);
        ceshi.add(4);
        assertEquals(7, ceshi.getResult());

    }

    @Test
    public void testMinus() {
        ceshi.add(8);
        ceshi.minus(3);
        assertEquals(5, ceshi.getResult());

    }

}

5.运行测试代码。

6.测试结果

表示第一个add成功,而第二个minus失败。

 

_(:3 」∠ )__(:3 」∠ )__(:3 」∠ )__(:3 」∠ )_***分割线***_(:3 」∠ )__(:3 」∠ )__(:3 」∠ )__(:3 」∠ )_

其实我本身也以为我上面的写的那个太简陋了…………因而我打算找一个JAVA项目来进行测试,而后我发现一个严重的问题:网上java项目太多我难如下手(´A`。)

因而我便借鉴了博客园一位用户的代码

地址:https://www.cnblogs.com/happyzm/p/6482886.html

在原先的基础上添加了一些代码

public class CeShi {

    private static int result; 
    public  void add(int n) {
        result = result + n;        //这个是正确的
    }
    public void minus(int n) {
        result = result + 10086;        //明显是错误的
    }
    
    public void multiply(int n) {
   
    }                                // 此方法还没有写好
    public void divide(int n) {
        result = result / n;
    }
    public void square(int n) {
        result = n * n;
    }
    public void squareRoot(int n) {
        for (; ;) ;                      //Bug : 死循环
    }
    public void clear() {              
        result = 0;
    }
    
    public int getResult(){
        return result;
    }

}
import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import jdk.nashorn.internal.ir.annotations.Ignore;

public class CeShiTest {
    private static CeShi ceshi = new CeShi();

    @Before
    public void setUp() throws Exception {
        ceshi.clear();
    }

    @Test
    public void testAdd() {
        ceshi.add(3);
        ceshi.add(4);
        assertEquals(7, ceshi.getResult());
    }

    @Test
    public void testMinus() {
        ceshi.add(8);
        ceshi.minus(3);
        assertEquals(5, ceshi.getResult());
    }    
    @Test
    public void testSubstract() {
        ceshi.add(8);
        ceshi.minus(3);
        assertEquals(5, ceshi.getResult());

    }
    @Test
    public void testMultiply() {
        fail("Not yet implemented");
    }
    @Test
    public void testDivide() {
        ceshi.add(8);
        ceshi.divide(2);
        assertEquals(4, ceshi.getResult());
    }
}

因为其中有一个死循环,而JUnit还能够限时,因此我在本身的电脑上跑了一遍。

在CeShiTest.java里添加代码:

    @Test(timeout = 2000)
    public void squareRoot() {
        ceshi.squareRoot(4);
        assertEquals(2, ceshi.getResult());
    }

JUnit也能够进行异常测试,我本身在电脑上试了一下,这里就不说了,是按照https://www.cnblogs.com/happyzm/p/6482886.html 里去作的。

第五部分:总结

JUnit使用起来很方便,但我如今才发觉,做为一个软件工程的学生,只会摆出理论的一套,实际上手去作的时候老是不知该如何开始。

其次就是,我明白了JUnit是个什么东西,它有什么用,但实际要用到项目上去的时候,我极可能会完彻底全的忽略掉它。

仍是把网上的各类项目都试试看吧,java基础很差,各类项目我都看晕了_(´ཀ`」 ∠)_

相关文章
相关标签/搜索