当我运行我的单元测试时,它会调用我的计划任务。我想防止这种行为,这是由于我在主应用程序配置中有 @EnableScheduling
引起的。
如何在我的单元测试中禁用它?
我遇到了这个建议设置配置文件的 问题/答案?
不确定我会怎么做?还是矫枉过正?我正在考虑为我的单元测试使用一个单独的 AppConfiguration,但是当我这样做时感觉就像我重复了两次代码?
@Configuration
@EnableJpaRepositories(AppConfiguration.DAO_PACKAGE)
@EnableTransactionManagement
@EnableScheduling
@ComponentScan({AppConfiguration.SERVICE_PACKAGE,
AppConfiguration.DAO_PACKAGE,
AppConfiguration.CLIENT_PACKAGE,
AppConfiguration.SCHEDULE_PACKAGE})
public class AppConfiguration {
static final String MAIN_PACKAGE = "com.etc.app-name";
static final String DAO_PACKAGE = "com.etc.app-name.dao";
private static final String ENTITIES_PACKAGE = "com.etc.app-name.entity";
static final String SERVICE_PACKAGE = "com.etc.app-name.service";
static final String CLIENT_PACKAGE = "com.etc.app-name.client";
static final String SCHEDULE_PACKAGE = "com.etc.app-name.scheduling";
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
// stripped code for question readability
}
// more app config code below etc
}
单元测试示例。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={AppConfiguration.class})
@Transactional
@TransactionConfiguration(defaultRollback = true)
@WebAppConfiguration
public class ExampleDaoTest {
@Autowired
ExampleDao exampleDao;
@Test
public void testExampleDao() {
List<Example> items = exampleDao.findAll();
Assert.assertTrue(items.size()>0);
}
}
原文由 Robbo_UK 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您不想使用配置文件,您可以添加启用/禁用应用程序调度的标志
在你的
AppConfiguration
添加这个在您的测试中只需添加此注释即可禁用调度