如何在我的dropwizard应用程序的单元测试中创建配置对象?
问题描述:
我们有一个配置类中我们dropwizard应用:如何在我的dropwizard应用程序的单元测试中创建配置对象?
public class MyConfiguration extends Configuration
我需要通过读取YAML文件创建在我的单元测试真正的配置对象。任何指针都会有用?
看起来当dropwizard应用程序启动时,应用程序将读取yaml配置文件并创建MyConfiguration,但我想在运行简单单元测试时使用真实(未模拟的)配置对象。
谢谢。
答
以下内容添加到您的POM的构建部分以包含YAML配置文件作为测试资源:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
<testResource>
<directory>${project.basedir}</directory>
<includes>
<include>config.yml</include>
</includes>
</testResource>
</testResources>
然后在单元测试中创建一个配置对象,像这样:
import javax.validation.Validator;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.dropwizard.jackson.Jackson;
import io.dropwizard.jersey.validation.Validators;
import io.dropwizard.configuration.YamlConfigurationFactory;
// ...
@Test
public void test() {
final ObjectMapper objectMapper = Jackson.newObjectMapper();
final Validator validator = Validators.newValidator();
final YamlConfigurationFactory<MyConfiguration> factory = new YamlConfigurationFactory<>(MyConfiguration.class, validator, objectMapper, "dw");
final File yaml = new File(Thread.currentThread().getContextClassLoader().getResource("config.yml").getPath());
final MyConfiguration configuration = factory.build(yaml);
// ...
}