原创 | 使用 JUnit、AssertJ 和 Mockito 编写单元测试和实践 TDD (十二)编写测试 - 简单测试

用户头像
编程道与术
关注
发布于: 2020 年 05 月 30 日
原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十二)编写测试-简单测试







上一章我们分享了“什么是JUnit”,这一章开始将分享“如何使用Junit编写测试”,我们从一个“简单测试”实例讲起。

在测试类中编写测试方法,一般将方法注解为@Test,@RepeatedTest,@ParameterizedTest,@TestFactory, @TestTemplate之一。我们从@Test开始。

绝大多数情况下,只需要用@Test定义测试方法,再加上4个生命周期方法@BeforeEach, @AfterEach, @BeforeAll和@AfterAll已经足够。所以,如果你时间有限,可以只学习本章的前面两节,后面的内容有空的时候再选择学习。



重要性:★★★★★

下面是一个测试类ConfigurationTest,包含了两个测试方法:

package yang.yu.configuration;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import static org.assertj.core.api.Assertions.assertThat;
class ConfigurationTest {
@TempDir
Path tempDir;
/**
* key存在,value存在,应当返回value
*/
@Test
void get_string_without_defaultValue_happy() throws Exception {
Path file = tempDir.resolve("conf.properties");
Files.write(file, Arrays.asList("birthday=2002-05-11",
"size=15",
"closed=true",
"locked=false",
"salary=12.5",
"name=张三",
"noneValue="));
Configuration instance = Configuration.builder()
.fromFile(file.toFile())
.dateFormat("yyyy-MM-dd")
.build();
assertThat(instance.getString("name")).isEqualTo("张三");
}
/**
* key存在, value存在,格式正确,应当返回value
*/
@Test
void get_int_with_defaultValue_and_with_value() throws Exception {
Path file = tempDir.resolve("conf.properties");
Files.write(file, Arrays.asList("birthday=2002-05-11",
"size=15",
"closed=true",
"locked=false",
"salary=12.5",
"name=张三",
"noneValue="));
Configuration instance = Configuration.builder()
.fromFile(file.toFile())
.dateFormat("yyyy-MM-dd")
.build();
assertThat(instance.getInt("size", 1000)).isEqualTo(15);
}
}



说明如下:

被注解为@Test的方法是测试方法。这里有两个测试方法:get_string_without_defaultValue_happy()get_int_with_defaultValue_and_with_value()

因为拥有测试方法,这个类就自动成为了测试类,会被Eclipse、IDEA等IDE和Maven、Gradle等构建工具自动识别,执行测试。

这个测试类用于测试被测类ConfigurationConfiguration能够从文本配置文件中读取配置项的值。

通过@TempDir注解创建了一个临时目录(这个注解在后面的章节中讲述)。在两个测试方法中,都会在这个临时目录下创建conf.properties文件,并向其中写入多行配置数据。从这个配置文件创建被测类Configuration的实例,进行测试。

可以见到,两个测试方法之间拥有大量的重复代码。用于创建被测类实例和准备测试数据。

下一节我们通过"生命周期方法"消除这些重复。







发布于: 2020 年 05 月 30 日 阅读数: 37
用户头像

编程道与术

关注

高级架构师,技术顾问,交流公号:编程道与术 2020.04.28 加入

杨宇于2020年创立编程道与术,致力于研究领域分析与建模、测试驱动开发、架构设计、自动化构建和持续集成、敏捷开发方法论、微服务、云计算等顶尖技术领域。 了解更多公众号:编程道与术

评论

发布
暂无评论
原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (十二)编写测试-简单测试