如何在我的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); 

    // ... 

}