简单测试
重要性:★★★★★
下面是一个测试类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等构建工具自动识别,执行测试。
- 这个测试类用于测试被测类
Configuration
。Configuration
能够从文本配置文件中读取配置项的值。 - 通过
@TempDir
注解创建了一个临时目录(这个注解在后面的章节中讲述)。在两个测试方法中,都会在这个临时目录下创建conf.properties
文件,并向其中写入多行配置数据。从这个配置文件创建被测类Configuration
的实例,进行测试。 - 可以见到,两个测试方法之间拥有大量的重复代码。用于创建被测类实例和准备测试数据。下一节我们通过生命周期方法消除这些重复。