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

在集成测试中重写spring@Configuration

公西国发
2023-03-14
@Configuration
public class ClockConfiguration {

    @Bean
    public Clock getSystemClock() {
        return Clock.systemUTC();
    }
}

我有一些集成测试是这样的:

@SpringBootTest(classes = MyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public abstract class AbstractIntegrationTest  {

}

和下面这样的测试:

public class MiscTests extends AbstractIntegrationTest{

    @Test
    public void CreateSomethingThatOnlyWorksInThe Morning_ExpectCorrectResponse() {

    }

我希望能够抵消时钟bean在一天的不同时间运行一些测试。我该怎么做?

@SpringBootTest(classes = MyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public abstract class AbstractIntegrationTest  {

    @Configuration
    class MyTestConfiguration {

        @Bean
        public Clock getSystemClock() {
            Clock realClock = Clock.systemDefaultZone();
            return Clock.offset(realClock, Duration.ofHours(9));
        }
    }
}

但那里什么都没发生。我需要@import什么吗?我需要自动连线吗?

谢谢!

共有1个答案

司寇善
2023-03-14

在使用Spring Boot时,可以利用@mockbean注释:

@SpringBootTest(classes = MyApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public abstract class AbstractIntegrationTest  {

    @MockBean
    private Clock clockMock;
}

然后您可以相应且唯一地保存该bean和每个测试的公共方法:

@Test
public void CreateSomethingThatOnlyWorksInThe Morning_ExpectCorrectResponse() {
     when(clockMock.getTime()).thenReturn(..);
}

根据@mockbean的javadoc:

 类似资料:
  • 应用程序类文件: 集成测试:

  • 最后是MockRestTemplateConfiguration

  • 我有一个用修饰的类,它应该重写这个: bean用于设置外部文件的路径,该文件包含在启动期间必须读取的注册代码。它用于类中: 在尝试调试时,我在每个方法以及test config类的构造函数中设置了一个断点。的构造函数断点被命中,因此我知道我的测试配置类实例化了,但是该类的方法从未被命中。相反,正常的类的方法被点击,中的总是而不是预期的。 不知道为什么会这样。任何想法都将不胜感激。

  • 我使用@Profile Spring注释在嵌入式、独立和容器管理的数据源之间进行选择。为了选择“嵌入”,我的集成测试被注释为激活适当的配置文件: 问题是,我想将'@ActiveProfiles'移动到TestConfigWrapper,但这样做没有得到执行,应用程序上下文也不会加载任何数据源。 有没有一种方法可以使用java配置来实现这一点?

  • 主要内容:1. 项目依赖,2. Spring组件,3. TestNG + Spring在本教程中,我们将演示如何使用TestNG测试Spring的组件。 使用的工具 : TestNG 6.8.7 Spring 3.2.2.RELEASE Maven 3 Eclipse IDE 1. 项目依赖 为了演示,首先创建一个名称为:TestngSpringIntegration 的 Maven 项目。 要将Spring与TestNG集成,您需要包依懒,添加以下内容: 创建文件:pom.xml

  • 我用的是Spring靴。我的数据库属性存在于ApplicationItest.properties文件中。 如何做这两个测试?我必须使用的正确注释是什么?有人能举个例子吗?