2016-12-22 3 views
0

私のテストは抽象BaseIntegrationTestクラスを既に拡張していますので、通常はTestng Spring統合テストで行うようにextends AbstractTestNGSpringContextTestsクラスはできません。私のBaseIntegrationTestがSpringアプリケーションコンテキスト(extends AbstractTestNGSpringContextTests)を読み込まないようにしてください。コンテキスト(DBエンティティを持っています)を必要としないサブクラステストがたくさんあり、ほとんどの場合、現在のものを除外します統合テストのためのDB接続が必要なテスト。だからしばらくの間、私はこのTestngベースのテストを実行する必要があります。これはすでにいくつかのクラスを拡張しており、まだcontextAwareに必要です(私はimplements ApplicationContextAwareを試していますが、私にとってはうまくいきません。どうしますか?Spring:TestngテストクラスのSpring ApplicationContextを取得する方法(AbstractTestNGSpringContextTestsを拡張できない場合)

答えて

2

これは、SpringがTestNGとどのように統合されているかを示しています。AbstractTestNGSpringContextTestsを拡張する必要があります。

new ClassPathXmlApplicationContext("context1.xml", "context2.xml") 

しかし、それはあなたが@Transactionalのような注釈の他の種類を使用することはできません。別の方法としては、手動テストで春をインスタンス化することができます。おそらく、あなたはSpringのTestNGリスナーとの独自の統合を書くことができます(hm ..なぜSpringは代わりにそれを使用しませんでしたか?)しかし、実装とデバッグには時間がかかるでしょう:)

また、 あなた自身の基本クラスを拡張することは良い考えではありません。残念ながら非常に一般的ですが。はるかに良い(読みやすい、OOPに優しい)方法は、共通のロジックで別のクラスと関数を作成することです。そしてあなたのテストでそれらを明示的に呼び出します。

関連する問題