@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什么吗?我需要自动连线吗?
谢谢!
在使用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文件中。 如何做这两个测试?我必须使用的正确注释是什么?有人能举个例子吗?