2016-05-26 5 views
0

私は、起動時に複数の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を持つメインクラスをとり、テストランナーは通常のようにアプリケーションを起動します。これが当てはまる場合は、毎回待ち行列を読み込んで、それを読んでいない場合、ユニットテストについてどうやって行くのか分かりません。もっと明確に見えるようにするための明確な提案や概念はありますか?

+0

必要に応じてクラスなどを追加しますが、今私はこれがいくつかの説明で修正可能な理解不足の問題であると感じています。 –

答えて

0

これは単に機能のハックであるのか、それともちょうどいいことか分かりません。私はちょうど@Before@Afterを設定し、基本的には待ち行列をクリアして、単体テストが実行することができるものが常にそれを取り除くようにします。

誰かが正確に何が起こっているのか、さらにそれに応じてどのようにフレームワークを使って作業するのかについての知識共有に貢献することを決めたら、それはまだ評価されます。さもなければ、私はそのポストがインターネットの底に落ちて、再び見られることはないと思う。

関連する問題