0、参考

在Intellij IDEA中添加JUnit单元测试 - 唐啊唐囧囧 - 博客园

1、引言

JUnit是Java中很出名的一个单元测试,关于JUnit的具体介绍,可以看之前写的编写JUnit测试 - ShineLe - 博客园

2、下载jar包

首先需要下载JUnit的jar包和它的依赖包hamcrest.core,下载地址:

junit:junit:4.13-beta-1
hamcrest.core:1.3.0.1

3、在IntelliJ IDEA项目中添加jar包

File→Project Structure→Module→Dependencies→右侧“+”号→JARs or directories...

4、下载插件并设置

需要下载一个名为JUnitGeneratorV2.0的插件:

File→Settings→Plugins→搜索JUnitGeneratorV2.0

对其进行设置

输出路径

输出路径是指通过JUnitGenerator插件,使用Alt + Insert快捷键自动生成当前class的所有方法的测试单元时,自动生成的.java的存放路径

默认路径是 $ {SOURCEPATH} / test / $ {PACKAGE} / $ {FILENAME},这里的SOURCEPATH是指.java文件所在的src目录,所以生成的测试文件夹test其实是在src目录下的,路径为src/test;

如果想要test与src同级,可以把输出路径修改为SOURCEPATH/../test/xxx,即${SOURCEPATH}/../test/${PACKAGE}/${FILENAME}

如果是使用Ctrl + Shift + T快捷键自定义需要测试的方法,则生成的文件会存放在指定的 存放测试文件的目录(下一节说明)。

JUnit内容修改

将图中的$data修改为$today,是为了防止生成的测试类产生乱码。

5、创建存放测试文件的目录

5.1、新建test目录,和src目录同级

需要在项目下新建一个文件夹,用于存放自动生成的测试.java文件,比如Factorial.java类对应的FactorialTest.java文件的存放位置。

这里我新建一个test目录,和src目录同级,如图:

5.2、将该目录设置为存放测试文件的目录

File→Project Structure→Modules→选中test,将其标记为Tests

标记完成后,会在右侧显示文件夹的性质:

6、使用JUnit

Alt + Insert:为所有方法创建测试类

当想要为当前类添加测试代码,只需要在当前类中使用Alt + Insert(或者工具栏Code→Generator),选择Test...→ JUnit5,就会自动生成当前类的测试类:

Ctrl + Shift + T:选择性测试

插件默认会测试所有方法,使用快捷键Ctrl + Shift +T可以选择性地测试部分方法,非常方便。

在输出路径中就可以看到自动生成的测试类,它只含有需要测试的方法,接下来就是编写代码对类进行测试了。

测试断言

  • assertTrue(): 期待结果为true
  • assertFalse(): 期待结果为false
  • assertNotNull(): 期待结果为非null
  • assertArrayEquals(): 期待结果为数组并与期望数组每个元素的值均相等
  • ...

7、编写测试代码,测试

7.1、待测试类Factorial

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

7.2、为待测试类编写JUnit测试类

按照第6节所说的内容,Alt + Insert 或 Ctrl + Shift + T生成JUnit测试类,并为相关方法的测试方法编写测试代码,测试代码主要由断言Assertion构成:

import org.junit.Test;

import static org.junit.Assert.*;

public class FactorialTest {

    @Test
public void fact() {
assertEquals(1, Factorial.fact(1));
assertEquals(23, Factorial.fact(2));
assertEquals(6, Factorial.fact(3));
assertEquals(3628800, Factorial.fact(10));
assertEquals(2432902008176640000L, Factorial.fact(20));
System.out.println("over!");
}

测试方法前用@Test注解,这是JUnit要求的,它会把带有@Test的方法识别为测试方法。

7.3、运行测设类

配置JUnit:Edit Configuration→Add New Configuration→JUnit→Class设置为测试类

运行:Run

结果:

D:\Java\jdk-16.0.1\bin\java.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\IntelliJ IDEA\IntelliJ IDEA 2020.2.3\lib\idea_rt.jar=58810:D:\IntelliJ IDEA\IntelliJ IDEA 2020.2.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\IntelliJ IDEA\IntelliJ IDEA 2020.2.3\lib\idea_rt.jar;D:\IntelliJ IDEA\IntelliJ IDEA 2020.2.3\plugins\junit\lib\junit5-rt.jar;D:\IntelliJ IDEA\IntelliJ IDEA 2020.2.3\plugins\junit\lib\junit-rt.jar;C:\Users\Le\Desktop\JavaTest\out\test\JavaTest;C:\Users\Le\Desktop\JavaTest\out\production\JavaTest;D:\Java\jar_Download\junit-4.13-beta-1.jar;D:\Java\jar_Download\org.ops4j.pax.tipi.hamcrest.core-1.3.0.1.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 FactorialTest

java.lang.AssertionError:
Expected :362800
Actual :3628800
<Click to see difference> at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotEquals(Assert.java:835)
at org.junit.Assert.assertEquals(Assert.java:647)
at org.junit.Assert.assertEquals(Assert.java:633)
at FactorialTest.fact(FactorialTest.java:12)
...
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)

结果中给出了测试结果,如果出错会给出出错值和期待值以及出错的地方。

IntelliJ:JUnit单元测试的更多相关文章

  1. 在Intellij IDEA中添加JUnit单元测试

    Intellij IDEA中添加JUnit单元测试 目录 Intellij IDEA中添加JUnit单元测试 下载jar包 在Intellij IDEA项目中添加jar包 下载插件并进行设置 创建存放 ...

  2. Junit 单元测试在 intelliJ IDEA 中的安装

    1.为什么使用Junit我们都知道,main 方法是一个程序的入口,通常来说,没有main方法,程序就无法运行.我们经常会写一些class文件(如下图所示),他们并没有自己的main方法.那么我们如何 ...

  3. junit单元测试(keeps the bar green to keeps the code clean)

    error是程序错误,failure是测试错误. junit概要: JUnit是由 Erich Gamma (设计模式的创始人)和 Kent Beck (敏捷开发的创始人之一)编写的一个回归测试框架( ...

  4. spring && Cobertura && maven &&junit 单元测试以及测试覆盖率

    1. 目的:       junit 单元测试,Cobertura   测试覆盖率报告       项目目录结构          2. maven 配置     <project xmlns= ...

  5. 解决Junit单元测试 找不到类 ----指定Java Build Path

    做junit 单元测试时,发现怎么执行都是以前编译过得代码. 最后找到原因了, src/test/java 编译完的.class路径是 Default output folder Default ou ...

  6. JUnit单元测试框架的使用

    http://blog.csdn.net/mao520741111/article/details/51462215 原文地址 http://www.open-open.com/lib/view/op ...

  7. Java 工具 JUnit单元测试

    Java 工具 JUnit单元测试 @author ixenos 1.1.   JUnit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个 ...

  8. Spring框架中整合JUnit单元测试的方法

    一. 步骤: 1. 拷贝jar包: 1. JUnit-4.9.jar和spring-test-4.2.4.RELEASE.jar ; 2. 替换原来的main函数: 1. 在测试类上使用注解方式替换: ...

  9. spring框架学习(三)junit单元测试

    spring框架学习(三)junit单元测试 单元测试不是头一次听说了,但只是听说从来没有用过.一个模块怎么测试呢,是不是得专门为一单元写一个测试程序,然后将测试单元代码拿过来测试? 我是这么想的.学 ...

随机推荐

  1. Let's Encrypt 证书 wget 报错

    最近发现一个奇怪的问题,网站使用 let's encrypt 的免费证书,浏览器访问时正常,但是wget的时候报错.报错信息如下: wget https://www.example.com --202 ...

  2. 带你十天轻松搞定 Go 微服务系列(七)

    序言 我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分 用户服务 产品服务 订单服务 支付服务 RPC 服务 Auth 验证( ...

  3. dp学习(三)

    dp优化(一) 10. 状压dp 11. 倍增优化dp 12. 单调队列优化 13. 决策单调性优化(四边形不等式优化) 14. 斜率优化 15. 数据结构优化

  4. 计算机电子书 2020 CDNDrive 备份(预览版 II)

    下载方式 pip install CDNDrive # 或 # pip install git+https://github.com/apachecn/CDNDrive cdrive download ...

  5. Spring学习六:自定义Event事件

    Spring 中的自定义事件 编写和发布自己的自定义事件有许多步骤.按照在这一章给出的说明来编写,发布和处理自定义 Spring 事件. 步骤 描述 1 创建一个名称为 SpringExample 的 ...

  6. Java开发环境及工具安装配置

    Java开发环境及工具安装配置 Windows JDK 下载地址 https://www.oracle.com/java/technologies/javase-downloads.html 安装配置 ...

  7. MSTP多生成树协议

    MSTP多生成树协议 目录 MSTP多生成树协议 1.MSTP(Multiple Spanning Tree Protocol)概述 2.STP.RSTP.PVST的应用缺陷 3.MSTP的主要特点 ...

  8. Jenkins敏捷开发 自动化构建工具

    一.序言 Jenkins 是一款自动化构建工具,能够基于 Maven 构建后端 Java 项目,也能够基于 nodejs 构建前端 vue 项目,并且有可视化 web 界面. 所谓自动化构建是按照一定 ...

  9. shell——trap捕捉信号(附信号表)

    trap捕捉信号有三种形式 第一种:trap "commands" signal-list 当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令. 例 ...

  10. 简单模拟Java中反射的应用场景

    有人说Java是一门静态语言.那么何为静态语言,动态语言又是什么? 1.动态语言 是一类在运行时可以改变其结构的语言:例如新的函数.对象.甚至代码可以 被引进,已有的函数可以被删除或是其他结构上的变化 ...