java - 在 Junit 测试中禁用 Spring @EnableScheduling

标签 java spring spring-mvc junit

我想在 Spring 测试中禁用 @Schedule,但我找不到办法。

我尝试为测试环境创建不同的配置类,但任务仍然被触发。 这是配置:

@Configuration
@EnableTransactionManagement
@EnableScheduling
@ComponentScan({"de.package"})
@PropertySource(name="application.properties", value="classpath:application.properties")
public class PersistenceJPAConfig {
...
}

这是测试环境配置。刚刚删除@EnableScheduling注解

@Configuration
@EnableTransactionManagement
@ComponentScan({"de.package"})
@PropertySource(name="application.properties", value="classpath:application.properties")
public class PersistenceJPATestConfig {
...
}

在测试中我使用:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { PersistenceJPATestConfig.class }, loader = AnnotationConfigContextLoader.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class GetArticlesTest {
...
}

但是当我运行测试时任务仍然被触发..有什么方法可以在运行测试时停止执行任务吗?

最佳答案

由于您两次都在同一个包上使用@ComponentScan,因此 spring 似乎也在加载其他配置。

您可以使用一些配置文件来过滤它,例如将其添加到您的 PersistenceJPATestConfig

@Profile("test")

在你的 JUnit 类上添加这个注解,这样它将使用“测试”配置文件执行

@ActiveProfiles("test")

编辑: 你的主配置也应该被分析,所以当它的配置文件不活动时它会被忽略,所以你应该在主配置类上添加另一个@Profile,其配置文件不同于“test”

关于java - 在 Junit 测试中禁用 Spring @EnableScheduling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39033456/

相关文章:

java - 优化Java客户端HTTPS连接

java - 匿名类与实现接口(interface)的编程约定

java - 无法实例化类型 [简单类型,类 java.time.LocalDate

java - 一对多关系的问题

java - 解析@Transactional时内存使用率高

java - 在 Spring Boot 中使用 JSP 中的自定义标记文件

java - 从 processBuilder 执行 .cpp 文件

java - 如何解决jsp页面中的这种错误?

java - 无法提取响应 : no suitable HttpMessageConverter with jaxb2marshaller

spring-mvc - 如何在 Controller 中获取请求映射值?