Ich habe eine Spring-Boot-JMS-Anwendung, die beim Start mehrere WebShpere-MQ-Warteschlangen lädt und die Nachrichten aus diesen Warteschlangen in eine andere Warteschlange kopiert. Alles funktioniert, aber ich beginne ein paar Tests, und ich denke da sind ein paar Dinge, die ich nicht verstehe. Also habe ich eine Config-Klasse, die eine Menge annotierter Beans enthält, eine dieser Beans ist die Klasse, die die Nachricht lädt, bevor mein JMSListener gestartet wird. Ich habe einfach Unit-Test:Komponententest der Spring Boot JMS-Anwendung hinterlässt Nachrichten in der Warteschlange
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ErrorQueueReportApplication.class)
@ActiveProfiles(profiles = "DEV")
public class CastsApplicationTests {
static Logger logger = LogManager.getLogger(CastsApplicationTests.class.getName());
@Value("${hostname}")
String host;
@Test
public void testEcsProps(){
System.out.println("Running test");
assertEquals("hostname.someTLD", host);
}
}
Dieser Test geht, aber ich erwartete nur einfach meine @Value
sehen überprüfen, ob sie gleich sind und getan. Aber wenn ich dies als Komponententest starte, wird meine gesamte Anwendung gestartet, und da ich eine Bean habe, die Warteschlangenverbindungen herstellt und eine Warteschlange lädt, macht dieser Komponententest die Warteschlangenverbindungen und lädt eine Warteschlange. Aber dann wird mein JMSListener nie gestartet, also bleibt alles nur in der Warteschlange und ich muss es manuell löschen. Das ist inakzeptabel.
Von was ich über Spring Boot verstehe, nimmt @SpringApplicationConfiguration()
die Hauptklasse, die den Anwendungskontext haben wird und der Test-Runner startet die Anwendung wie es normalerweise würde. Wenn das der Fall ist, bin ich mir nicht sicher, wie ich mit Unit Testing vorgehen soll, wenn es jedes Mal meine Warteschlange lädt und sie nie liest. Irgendwelche Vorschläge oder Konzepte zu klären, um mir zu helfen, klarer zu sehen?
Ich werde bei Bedarf weitere Klassen usw. hinzufügen, aber im Moment habe ich das Gefühl, dass dies eher ein Mangel an Verständnisproblem ist, das mit einiger Klärung behoben werden kann. –