连接 JUnit 框架

为了测试 Java 代码,我们有一个很棒的框架,称为JUnit。它运行良好,不断更新,非常受欢迎,当然 Intellij IDEA 与它紧密集成。

现在每个人都在使用这个框架的第五个版本——JUnit 5,尽管在很多项目中你仍然可以找到它的第四个版本。它们并没有太大的不同,但无论如何我们都会看一下最新的。我想当你开始积极编写测试时,你会赞同我的选择。

那么,如何将JUnit添加到项目中呢?学习 Maven 后,这将很容易:只需将此代码添加到您的 pom.xml 中:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

顺便说一句,如果你想让 Maven 在构建阶段(测试阶段)运行你的测试,那么你需要再添加一个片段到 pom.xml:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
	<version>2.19.1</version>
	<dependencies>
    	<dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
    	</dependency>
	</dependencies>
</plugin>

@Test 注解

假设您有一个要测试的课程。做这个的最好方式是什么?让我们从一些例子开始,因为很难测试一个抽象类:)

假设我们有一个可以执行 4 种基本运算的计算器类:加法、减法、乘法和除法。让我们写一下:

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

    	public int sub(int a, int b) {
        	return a-b;
    	}

    	public int mul (int a, int b) {
        	return a*b;
    	}

    	public int div(int a, int b) {
        	return a/b;
    	}
}

我们想测试这个类的方法。你永远不知道,将来他们会改变一些东西,一切都会停止工作。我们如何为它编写测试?

我们需要创建另一个类。为此,它们通常采用相同的名称并添加 Test 后缀。对于每种方法,您必须至少添加一种测试方法。例子:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

过去曾要求方法名称以单词test开头,但这不再是必需的。

JUnit 测试示例

让我们写一些例子,我们将在其中测试我们的CalculatorTest类的方法:

class CalculatorTest {
   	@Test
    	public void add() {
        	Calculator calc = new Calculator();
        	int result = calc.add(2, 3);
        	assertEquals(5, result);
    	}

   	@Test
    	public void sub() {
        	Calculator calc = new Calculator();
        	int result = calc.sub(10, 10);
        	assertEquals(0, result);
        }

   	@Test
    	public void mul() {
        	Calculator calc = new Calculator();
        	int result = calc.mul(-5, -3);
        	assertEquals(15, result);
    	}

   	@Test
    	public void div() {
        	Calculator calc = new Calculator();
        	int result = calc.div(2, 3);
        	assertEquals(0, result);
    	}
}

这就是典型的 JUnit 测试的样子。有趣的是:这里使用了特殊方法assertEquals():它比较传递给它的参数,正如其名称中的 equals 一词所示。

如果传递给assertEquals() 的参数不相等,该方法将抛出异常并且测试将失败。此异常不会阻止其他测试运行。