2016-11-03 4 views
1

私は春の概念を初めて習得しました。クラスのメソッドの1つとしてJunitを記述しようとしています。私は複数の場所から@Autowiredとして使用されている春のフレームワークJdbcTemplateクラスをモックしたいです。しかし、私は各クラスに@Mockを使用したくありません。このクラスを模擬する方法はありますか?@Autowiredを使用して複数の場所から使用できます。春の多くのクラスで共通のクラスインスタンスを模擬してください

ありがとうございました。

答えて

0

種類が無回答ですが、ユニットテストの場合はSpringinject dependenciesを使用することはお勧めしません。 constructor injectionを使用している場合は、単体テストからコンストラクタを呼び出し、モックを渡したり、手動でダブルテストしたりすることができます。これは単体テストから、テスト目的のために供給された依存性がどのようなものかを明確かつ明確にします。セッター注射を使用している場合、同じことをすることができます。テスト対象のクラスをSpringで具体化しないでください。junitテストクラスからテスト対象クラスを作成し、そのクラスに必要な依存関係を必然的に指定してください。

+0

お返事ありがとうございました。このメソッドを含むクラスには、JdbcTemplate beanだけを模擬したいAutowired Beanが複数あります。しかし、私のテストクラスで@Mock jdbcTemplteを使用しているときに、元のクラスのBeanを作成しているときに、jdbcTemplateのエラーnosucbeanfoundエラーが発生しています。助けてもらえますか? –

+0

春からどのようにテスト対象のクラスを取得していますか? autowiredアノテーションがクラスパスに注入されるクラスを見つけられないように思えます。私はもう少しコードを見る必要があります。 @Mockはmockitoアノテーションですので、そのフレームワークを使ってモックを作成しようとしているようです。 –

+0

私のテストクラスです。パブリッククラスのテスト{@@ Mock JdbcTemplate a; @@ Autowired ABC abc; @Beforeパブリックvoid init(){MockitoAnnotations.initMocks(this);} @@テストpublic void test(){abc.somemethod()}} –

0

あなたのテストに固有のバネプロファイル(例 "test")を定義し、そのプロファイルでは模擬ライブラリと注釈@Profile("test")を持つJdbcTemplate beanを作成します。このようにして、この模擬テストは、「テスト」プロファイルがアクティブな場合にのみ作成されます。

実際のJdbcTemplate beanに注釈@Profile("!test")を追加して、テストプロファイルで作成されないようにします。

次に、テストクラスの上に@ActiveProfiles("test")アノテーションを追加します。

関連する問題