私は春の概念を初めて習得しました。クラスのメソッドの1つとしてJunitを記述しようとしています。私は複数の場所から@Autowired
として使用されている春のフレームワークJdbcTemplate
クラスをモックしたいです。しかし、私は各クラスに@Mock
を使用したくありません。このクラスを模擬する方法はありますか?@Autowired
を使用して複数の場所から使用できます。春の多くのクラスで共通のクラスインスタンスを模擬してください
ありがとうございました。
私は春の概念を初めて習得しました。クラスのメソッドの1つとしてJunitを記述しようとしています。私は複数の場所から@Autowired
として使用されている春のフレームワークJdbcTemplate
クラスをモックしたいです。しかし、私は各クラスに@Mock
を使用したくありません。このクラスを模擬する方法はありますか?@Autowired
を使用して複数の場所から使用できます。春の多くのクラスで共通のクラスインスタンスを模擬してください
ありがとうございました。
種類が無回答ですが、ユニットテストの場合はSpring
〜inject dependencies
を使用することはお勧めしません。 constructor injection
を使用している場合は、単体テストからコンストラクタを呼び出し、モックを渡したり、手動でダブルテストしたりすることができます。これは単体テストから、テスト目的のために供給された依存性がどのようなものかを明確かつ明確にします。セッター注射を使用している場合、同じことをすることができます。テスト対象のクラスをSpring
で具体化しないでください。junit
テストクラスからテスト対象クラスを作成し、そのクラスに必要な依存関係を必然的に指定してください。
あなたのテストに固有のバネプロファイル(例 "test")を定義し、そのプロファイルでは模擬ライブラリと注釈@Profile("test")
を持つJdbcTemplate
beanを作成します。このようにして、この模擬テストは、「テスト」プロファイルがアクティブな場合にのみ作成されます。
実際のJdbcTemplate
beanに注釈@Profile("!test")
を追加して、テストプロファイルで作成されないようにします。
次に、テストクラスの上に@ActiveProfiles("test")
アノテーションを追加します。
お返事ありがとうございました。このメソッドを含むクラスには、JdbcTemplate beanだけを模擬したいAutowired Beanが複数あります。しかし、私のテストクラスで@Mock jdbcTemplteを使用しているときに、元のクラスのBeanを作成しているときに、jdbcTemplateのエラーnosucbeanfoundエラーが発生しています。助けてもらえますか? –
春からどのようにテスト対象のクラスを取得していますか? autowiredアノテーションがクラスパスに注入されるクラスを見つけられないように思えます。私はもう少しコードを見る必要があります。 @Mockはmockitoアノテーションですので、そのフレームワークを使ってモックを作成しようとしているようです。 –
私のテストクラスです。パブリッククラスのテスト{@@ Mock JdbcTemplate a; @@ Autowired ABC abc; @Beforeパブリックvoid init(){MockitoAnnotations.initMocks(this);} @@テストpublic void test(){abc.somemethod()}} –