Java 学习笔记

所有文章
📖 最新文章 transmittable-thread-local 库 JOOR 反射库 Lombok 库:为你减少样板代码 Slf4j 日志组件的使用 加速maven、gradle依赖下载
📖 Java 基础 安装 第一个程序 使用 UTF-8 编写代码 空值 null 正则表达式 线程 日期/时间 匿名类 枚举 ThreadLocal 线程本地变量 动态代理 jar 命令

JUnit 入门


JUnit 是一个测试框架,经常被拿来做单元测试。单元测试的粒度一般是方法。

我们看下如何编写单元测试。

如何编写单元测试

参考使用Intellij IDEA创建Java项目,我们创建一个基于gradle的java项目,其中 build.gradle 的默认内容如下:

plugins {
    id 'java'
}

group 'com.example'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

可以看到在 dependencies 中引入了junit依赖:

testCompile group: 'junit', name: 'junit', version: '4.12'

testCompile声明的依赖,只有在进行测试时才有效。又或者说,只有在src/test目录下的代码才会感知到 junit 依赖。

src/main/java中创建 Calculate 类,内容如下:

public class Calculate {

    public int add(int a, int b) {
        return a+b;
    }

}

src/test/java中创建 CalculateTest 类,内容如下:

import org.junit.Assert;
import org.junit.Test;

public class CalculateTest {

    @Test
    public void testAdd_01() {
        Calculate calculate = new Calculate();
        Assert.assertEquals(3, calculate.add(1, 2));
    }

    @Test
    public void testAdd_02() {
        Calculate calculate = new Calculate();
        Assert.assertEquals(4, calculate.add(1, 2));
    }

}

Assert 类中提供了一系列的断言方案,其中最常用的是assertEquals,第一个参数代表期望的值,第二个参数代表计算出的值。若两个值不相等,则抛出错误,认为测试失败。

在 testAdd_01 函数内部,鼠标右击,选择「Run testAdd_01」,会看到测试成功:

在 testAdd_02 函数内部,鼠标右击,选择「Run testAdd_02」,会看到测试失败:

在 testAdd_01 和 testAdd_02 函数外,鼠标右击,选择「Run CalculateTest」,会看到 testAdd_01 和 testAdd_02 都执行了:

几个问题:

Intellij IDEA 是如何支持 JUnit 测试的?

Intellij IDEA 默认集成了 JUnit 插件,所以可以通过右键菜单选项很方便的测试某个类中的单个测试、某个类的所有测试、某个包下的所有测试、以及 src/test 下的所有测试。

可以从 Intellij IDEA 自带的插件系统中找到该插件,如果禁用该插件,相应的右键菜单选项会消失。

如果要执行src/test目录下的所有测试代码,怎么做?

Intellij IDEA 中右击该目录,选择 Run All Tests

如果将 build.gradle 中的 testCompile 改成compile,那么能在src/main目录写测试代码吗?

能。


( 本文完 )

文章目录