ウェルド自体はあなたのお手伝いができません。ウェルドSEは実際にクラスパス上の最初のbeans.xml
を選択します。より正確には、main/resources/META-INF/beans.xml
がBeanアーカイブmain/java/
に使用され、test/resources/META-INF/beans.xml
がBeanアーカイブtest/java/
に使用されます。したがって、これを混ぜ合わせることは最高ですが、Weldはデフォルトでそれをサポートしていません。
いずれにせよ、あなたのトラブルを解決する方法はいくつかあります。
使用Arquillian +シュリンクラップ
CDIテストのためにあなたはそれを学ぶと、これは、あなたが望むことができる最良の方法は、非常に良いものです。 Shrinkwrapを使用すると、必要なクラスだけでなく、beans.xml
も含め、必要に応じて配置を正確に調整できます。があります。これはWeld SEテストスイートでも使用されていますので、そこに自分自身を刺激することができます。あなたのユニットテストでの溶接SE
どこかをブートストラップしながら、
を無効発見、あなたは溶接コンテナを始めています。その間に、Weld#disableDiscovery()
を使用すると、合成Beanアーカイブを作成することになります。そのようなアーカイブでは、デフォルトの検出が無効になり、(methodsなどaddBeanClasses
,addPackage
..などのように)特別に追加したものだけが結果のアーカイブに記録されます。あなたが発見したことがないので、はbeans.xml
が選ばれます!代わりに、すべての代替、インターセプタ、...を定義します(これには、Weld
classのメソッドもあります)。さて、私はこれをいくつかの@Before
メソッドに「簡単に」置くことができると思います。あるいは、Weld-junit
を使用してJUnit @Rule
を提供し、クラスごとの配備を簡単に記述することもできます。
上記の両方の方法が、その苦労を助けるはずです。しかし、私が言ったように、ただ普通のWeld SEでこれを達成する方法はありません。
こんにちは、私はArquillian + Shrinkwrapを試してみてください。しかし、私たちがmavenテスト(id test/java /)を実行するとき、test/resources/META-INF/beans.xmlファイルは使用されず、これはmain/resources/META-INFの中のものです。 – granier
さて、私が言っていることは、ウェルドに "こんにちは、これを選んでください!"と言う方法がないということです。代わりに、私はあなたにあなたが望むことをするための2つの代替方法を提供しています。 – Siliarus