当前位置: 首页 > 知识库问答 >
问题:

如何在dropwizard应用程序的单元测试中创建配置对象?

宋奇希
2023-03-14

我们在dropwizard应用程序中有一个配置类:

public class MyConfiguration extends Configuration

我需要通过读取yaml文件在单元测试中创建真正的配置对象。有什么指针会有用吗?

看起来像是当dropwizard应用程序启动时,应用程序将读取yaml配置文件并创建MyConfiguration,但是在运行简单的单元测试时,我想要一个真实的(不是模拟的)配置对象。

谢谢你。

共有1个答案

百里景山
2023-03-14

将以下内容添加到 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);

    // ...

}
 类似资料:
  • 我被要求在一个非常大的SpringBoot项目中为一个服务创建一个集成测试,该项目产生了几十个已实现的服务。当应用程序执行时,所有这些服务都被部署了——我希望避免部署与我正在为其创建测试的服务无关的所有服务。不幸的是,我(还)没有像我希望的那样有很多Spring启动测试的经验,因此我想知道解决这个问题的最佳方法是什么。 我曾考虑在测试类中使用注释对所有不相关的服务进行注释,并使用对所有相关服务进行

  • 使用 GWT 更轻松地测试异步应用程序 您可能从编写 Ajax 应用程序中获得了极大乐趣,但是对它们执行单元测试却着实让人头痛。 在本文中,Andrew Glover 着手解决 Ajax 的弱点(其中之一),即应对异步 Web 应用程序执行单元测试的固有挑战。 幸运的是,他发现在 Google Web Toolkit 的帮助下,解决这个特殊的代码质量问题要比预想的容易。 Ajax 在近期无疑是 W

  • 本章讨论使用 JUnit,Mockito,MRUnit 和 HBaseTestingUtility 对 HBase 应用程序进行单元测试。大部分信息来自关于测试 HBase 应用程序的社区博客文章。有关 HBase 本身的单元测试的信息,请参阅 hbase.tests 。 175. JUnit HBase 使用 JUnit 进行单元测试 此示例将单元测试添加到以下示例类: public class

  • 我正在使用Guice和Dropwizard开发一个应用程序,在其中我们创建了不同的包,如Guice包、migrations包等,并将它们添加到initialize()方法中的bootstrap中。 注意:我知道另一种方法,您可以在run()方法中创建Module类的对象,用于创建注入器(配置和环境对象在MyModule类的构造函数中作为参数传递)。但这需要我在run()方法中注册所有托管对象和所有

  • 我有一个Dropwizard应用程序,它使用Dropwizard度量并使用BigTable进行持久化。我已经从我的应用程序向graphite报告了指标,并且也希望报告客户端BigTable指标。我看到现有的类<code>BigtableClientMetrics<code>支持报告客户端指标<还提供了code>DropwizardMetricRegistry,它包装了DropWidger并创建了类

  • 为了让单元测试跑一个批处理的任务,这个框架必须加载这个任务的ApplicationContext,两个注解的触发方式: @RunWith(SpringJUnit4ClassRunner.class):表明这个类需要使用Spring的测试工具 @ContextConfiguration(locations = {…}):表明哪些xml文件包含ApplicationContext @RunWith