IDEA中使用JUnit4单元测试

本文介绍JUnit单元测试的重要性,然后详细介绍了使用IDEA工具搭建单元测试的步骤。

什么是JUnit?

  • JUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛。JUnit是事实上的单元测试的标准框架,任何Java开发者都应当学习并使用JUnit编写单元测试。
  • 使用JUnit编写单元测试的好处在于,我们可以非常简单地组织测试代码,并随时运行它们,JUnit就会给出成功的测试和失败的测试,还可以生成测试报告,不仅包含测试的成功率,还可以统计测试的代码覆盖率,即被测试的代码本身有多少经过了测试。对于高质量的代码来说,测试覆盖率应该在80%以上。

安装步骤

  1. 如果没有安装IDEA,需要先配置好相关环境。
  2. 打开IDEA,先新建一个Java项目,点击 文件File-新建New-项目Project
  3. 完成项目的创建后,点击 文件File-设置Settings-Plugins 在搜索栏搜索 JUnit,进行安装。

image.png

我的IDEA使用的是2019年版本,默认安装了JUnit。

  1. 通过Libraries添加Jar包

1)打开 File -> Project Structure ->Modules-> 在Dependencies 下添加jar包。
我使用的IDEA,自带JUnit-4.1.2跟Hamcrest-core-1.3jar包,在存储路径下lib文件夹中。若没有,需要到网上下载这两个jar包,添加到依赖项中。
需注意:从JUnit 4.11开始,Hamcrest已经不再包含在junit.jar中了,需要单独引入。
image.png

  1. 新建一个测试目录

创建一个和src同级别的文件夹叫test(逻辑代码放src里,测试代码放test里是个好习惯)。接着在IntelliJ IDEA里还要把这个test文件夹要设置成测试文件的根目录,右键选中Mark Directory As - Test Sources Root。
image.png

  1. 以下是我直接在src路径下新建的被测试类Factorial,以它为例。

image.png

//Factorial.java
public class Factorial {
    public static long fact(long n) {
        long r = 1;
        for (long i = 1; i <= n; i++) {
            r = r * i;
        }
        return r;
    }
}

  1. 创建Junit4的测试代码,鼠标右键点击类名 使用 goto-Test即可实现

image.png

  1. 创建测试,根据自身需要来勾选

image.png

//测试代码 FactorialTest.java
public class FactorialTest {

    @Test
    public void fact() {
        assertEquals(1, Factorial.fact(1));
        assertEquals(2, Factorial.fact(2));
        assertEquals(6, Factorial.fact(3));
        assertEquals(3628800, Factorial.fact(10));
        assertEquals(2432902008176640000L, Factorial.fact(20));
    }
}
  1. 所有工作已经做完,此时点击运行就可以啦!正常来说会测试成功,运行结果如下:

image.png

此时一个简单的Junit注解使用就算成功了!

最后附上一些常用的概念:
一个测试类中只能声明此注解一次,此注解对应的方法只能被执行一次
@BeforeClass 使用此注解的方法在测试类被调用之前执行
@AfterClass 使用此注解的方法在测试类被调用结束退出之前执行
一个类中有多少个@Test注解方法,以下对应注解方法就被调用多少次
@Before 在每个@Test调用之前执行
@After 在每个@Test调用之后执行
@Test 使用此注解的方法为一个单元测试用例,一个测试类中可多次声明,每个注解为@Test只执行一次
@Ignore 暂不执行的测试用例,会被JUnit4忽略执行

如果您觉得有收获的话,欢迎点赞评论加关注,互相学习进步,一直在路上~~


版权声明:本文为weixin_39595195原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。