连接 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() 的参数不相等,该方法将抛出异常并且测试将失败。此异常不会阻止其他测试运行。
GO TO FULL VERSION