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. Clusternet:一款开源的跨云多集群云原生管控利器!

    作者 徐迪,Clusternet 项目发起人,腾讯云容器技术专家. 摘要 Clusternet (Cluster Internet)是一个兼具多集群管理和跨集群应用编排的开源云原生管控平台,解决了跨云 ...

  2. 洛谷P1002过河卒java100分题解

    题目描述如图: 这道题我以前以回溯的方法做,只能拿到60分 现在才发现是道动态规划题 解题思路: 创建一个(0,0)到终点打小的二维数组表示棋盘 每个坐标的值为此位置到终点的路数 最下方一排和最右方一 ...

  3. shell脚本检查域名证书是否过期

    最近公司的域名准备过期了,防止用户访问的时候出现异常,所以最近我们准备替换相关网站证书为最新的. (一般HTTPS证书有效期为1年,证书过期后或者该证书不是该域名的有效证书时,在浏览器中访问会出现如下 ...

  4. 「ZJOI2017」树状数组

    「ZJOI2017」树状数组 以下均基于模2意义下,默认\(n,m\)同阶. 熟悉树状数组的应该可以发现,这题其实是求\(l-1\)和\(r\)位置值相同的概率. 显然\(l=1\)的情况需要特盘. ...

  5. 如何实现固定宽高的DOM元素的水平垂直居中

    效果:

  6. LVS-DR群集

    LVS-DR群集 目录 LVS-DR群集 一.LVS-DR的工作原理 1. LVS-DR数据包流向分析 2. IP包头及数据帧头信息的变化 3. DR模式的特点 4.LVS-DR中的ARP问题 (1) ...

  7. netty系列之:真正的平等–UDT中的Rendezvous

    目录 简介 建立支持Rendezvous的服务器 处理不同的消息 节点之间的交互 总结 简介 在我们之前提到的所有netty知识中,netty好像都被分为客户端和服务器端两部分.服务器端监听连接,并对 ...

  8. ConcurrentHashMap怎么保证安全的

    HashMap是一个线程不安全的容器,当容量大于总量*负载因子发生扩容时可能会出现环形链表从而导致死循环 扩容就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下, ...

  9. Ubuntu20.04.3中telnet 127.0.0.1时Unable to connect to remote host: Connection refused

    本博客旨在自我学习使用,如有任何疑问请及时联系博主 今天遇到个稀奇古怪的问题: 调试emqx的时候一直econnrefused,检查服务时,突然发现在ubuntu上telnet localhost竟然 ...

  10. Spring系列14:IoC容器的扩展点

    Spring系列14:IoC容器的扩展点 回顾 知识需要成体系地学习,本系列文章前后有关联,建议按照顺序阅读.上一篇我们详细介绍了Spring Bean的生命周期和丰富的扩展点,没有阅读的强烈建议先阅 ...