Wir haben eine Frühling auf Basis JUnit-Testklasse, die Konfiguration, die eine innere TestkontextklasseVerwenden Sie unterschiedliche Federtestkontextkonfiguration für unterschiedliche Testmethoden
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = ServiceTest.Config.class)
public class ServiceTest {
@Test
public void someTest() {
...
@Configuration
@PropertySource(value = { "classpath:application.properties" })
@ComponentScan({ "..." })
public static class Config {
...
Neue Funktionalitäten wurden kürzlich an die Service-Klasse eingeführt, für welche Verwendung Die betreffenden Tests sollten ServiceTest hinzugefügt werden. Dies würde jedoch auch erfordern, dass eine andere Testkontextkonfigurationsklasse erstellt wird (die Interna der vorhandenen Config-Klasse sind ziemlich komplex und ändern sich, um sowohl alte als auch neue Tests zu bedienen, scheint extrem schwierig zu sein)
Gibt es eine Möglichkeit zu erreichen, dass bestimmte Testmethoden in einer Testklasse eine Konfigurationsklasse verwenden und andere Methoden eine andere verwenden? @ContextConfiguration
scheint nur auf Klassenebene anwendbar zu sein, so dass die Lösung darin bestehen könnte, eine weitere Testklasse für die neuen Tests zu erstellen, die ihre eigene Kontextkonfigurationsklasse verwenden würde; aber es würde bedeuten, dass die gleiche Service-Klasse wird über zwei verschiedene Testklassen
Aber funktioniert die Autowired-Einspritzung in der Basisklasse, wenn wir sie manuell einrichten? – pinkpanther
@pinkpanther: Sie verwechseln das Test-Setup mit dem getesteten Code. Das Testsetup verwendet nicht '@ Autowired'. Ich vermeide die Injektion in Tests, wenn ich kann: Es verlangsamt die Tests und macht es schwieriger zu sehen, was vor sich geht. Wenn IDEs "zeige mir, was hier injiziert wird, wenn ich den Test ausführe", werde ich meine Meinung ändern. –