JUnit初学者教程


JUnit是最受欢迎的Java单元测试框架

  • 这是我们在本节中将学到的内容的概述

  • 步骤1:什么是JUnit和单元测试?

  • 步骤2:第一个JUnit专案和Green Bar
  • 步骤3:第一个代码和第一个单元测试
  • 步骤4:其他assert方法
  • 步骤5:重要注解

免费课程—分十步学习

步骤1:什么是JUnit和单元测试?

  • 什么是JUnit?
  • 什么是单元测试?
  • 单元测试的优势

我们通常在大型项目中工作-其中一些项目具有2000多个源文件,有时它可能多达10000个文件,带有一百万行代码。

在进行单元测试之前,我们依赖于部署整个应用程序并检查屏幕是否看起来不错。但这不是很有效。这是手动的。

单元测试专注于为各个类和方法编写自动化测试。

JUnit是一个框架,可以帮助您调用方法并检查(或断言)输出是否符合预期。

自动化测试的重要之处在于,只要某些代码发生更改,这些测试就可以连续集成地运行。

步骤2:第一个JUnit专案和Green Bar

  • 什么是JUnit?
  • JUnit的第一个项目
  • 第一个JUnit类
  • 没有失败就是成功
  • 带求和方法的MyMaths类
package com.in28minutes.junit;
public class MyMath {
    int sum(int[] numbers) {
        int sum = 0;
        for (int i : numbers) {
            sum += i;
        }
        return sum;
    }
}

步骤3:第一个代码和第一个单元测试

  • 求和方法的单元测试
package com.in28minutes.junit;
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class MyMathTest {
    MyMath myMath = new MyMath();

    // MyMath.sum
    // 1,2,3 => 6
    @Test
    public void sum_with3numbers() {
        System.out.println("Test1");
        assertEquals(6, myMath.sum(new int[] { 1, 2, 3 }));
    }

    @Test
    public void sum_with1number() {
        System.out.println("Test2");
        assertEquals(3, myMath.sum(new int[] { 3 }));
    }
}

步骤4:其他断言方法

* assertTrue和assertFalse方法
package com.in28minutes.junit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class AssertTest {

    @Test
    public void test() {
        boolean condn = true;
        assertEquals(true, condn);
        assertTrue(condn);
        // assertFalse(condn);
    }

}

步骤5:重要注解

  • @Before @After批注
    • 在类中的每个测试方法之前和之后运行
  • @BeforeClass @AfterClass批注
    • 在测试类之前和之后执行一次的静态方法
package com.in28minutes.junit;
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class MyMathTest {
    MyMath myMath = new MyMath();

    @Before
    public void before() {
        System.out.println("Before");
    }

    @After
    public void after() {
        System.out.println("After");
    }

    @BeforeClass
    public static void beforeClass() {
        System.out.println("Before Class");
    }

    @AfterClass
    public static void afterClass() {
        System.out.println("After Class");
    }

    // MyMath.sum
    // 1,2,3 => 6
    @Test
    public void sum_with3numbers() {
        System.out.println("Test1");
        assertEquals(6, myMath.sum(new int[] { 1, 2, 3 }));
    }

    @Test
    public void sum_with1number() {
        System.out.println("Test2");
        assertEquals(3, myMath.sum(new int[] { 3 }));
    }
}

完整的代码示例 /src/com/in28minutes/junit/MyMath.java

package com.in28minutes.junit;
public class MyMath {
    int sum(int[] numbers) {
        int sum = 0;
        for (int i : numbers) {
            sum += i;
        }
        return sum;
    }
}

/test/com/in28minutes/junit/AssertTest.java

package com.in28minutes.junit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class AssertTest {

    @Test
    public void test() {
        boolean condn = true;
        assertEquals(true, condn);
        assertTrue(condn);
        // assertFalse(condn);
    }

}

/test/com/in28minutes/junit/MyMathTest.java

package com.in28minutes.junit;
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class MyMathTest {
    MyMath myMath = new MyMath();

    @Before
    public void before() {
        System.out.println("Before");
    }

    @After
    public void after() {
        System.out.println("After");
    }

    @BeforeClass
    public static void beforeClass() {
        System.out.println("Before Class");
    }

    @AfterClass
    public static void afterClass() {
        System.out.println("After Class");
    }

    // MyMath.sum
    // 1,2,3 => 6
    @Test
    public void sum_with3numbers() {
        System.out.println("Test1");
        assertEquals(6, myMath.sum(new int[] { 1, 2, 3 }));
    }

    @Test
    public void sum_with1number() {
        System.out.println("Test2");
        assertEquals(3, myMath.sum(new int[] { 3 }));
    }
}


原文链接:http://codingdict.com