私は、起動時に複数のWebShpere MQキューをロードし、それらのキューから別のキューにメッセージをコピーするSpringブートJMSアプリケーションを使用しています。すべて動作しますが、私は単体テストを開始しています。私は理解していないことをいくつか考えています。だから私は、一連の注釈付きBeanを保持するconfigクラスを持っています。それらのBeanの1つは、JMSListenerが起動する前にメッセージのロードを行うクラスです。私は、単純なユニットテストを持っている:SpringブートJMSアプリケーションのユニットテストでメッセージをキューに残す
@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);
}
}
このテストに合格したが、私は単にそれらが等しいと行われていることがわかり@Value
私を確認することが期待します。しかし、これを単体テストとして実行すると、アプリケーション全体が起動します。キューに接続してキューをロードするBeanがあるため、このユニットテストによってキューの接続が確立され、キューがロードされます。しかし、私のJMSListenerは決してキックオフされないので、すべてがキューに留まり、手動でクリアする必要があります。これは受け入れがたい。
私がSpring Bootについて理解していることから、@SpringApplicationConfiguration()
はApplication Contextを持つメインクラスをとり、テストランナーは通常のようにアプリケーションを起動します。これが当てはまる場合は、毎回待ち行列を読み込んで、それを読んでいない場合、ユニットテストについてどうやって行くのか分かりません。もっと明確に見えるようにするための明確な提案や概念はありますか?
必要に応じてクラスなどを追加しますが、今私はこれがいくつかの説明で修正可能な理解不足の問題であると感じています。 –