Wenn ich meine Komponententests ausführen, ruft es meine geplanten Aufgaben auf. Ich möchte dieses Verhalten verhindern, das durch die Tatsache verursacht wird, dass ich @EnableScheduling
in meiner Haupt-App-Konfiguration habe.Deaktivieren Sie @EnableScheduling bei Spring Tests
Wie kann ich dies bei meinen Komponententests deaktivieren?
Ich bin auf diese question/answer gestoßen, die das Einrichten von Profilen vorschlägt?
Nicht sicher, wie ich das machen würde? oder wenn es ein Overkill ist? Ich dachte daran, eine separate AppConfiguration für meine Unit-Tests zu haben, aber es fühlt sich an, als würde ich Code zweimal wiederholen, wenn ich das tue?
@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
}
Testeinheit Beispiel.
@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);
}
}
Warum wollen Sie Feder Rahmen für Unit-Tests benutzen? –
, so dass es meine Objekte autowires, so dass ich meine Daos und Dienste testen kann? –
Du könntest den Dao nur verspotten. Am besten wäre ein Framework wie Mockito. –