EnzoMolion:
私が持っている@Component
、-annotatedクラスを使用して注入プライベートコンストラクタを、および@Autowired
ネストされた注射用セッターを-annotated。
ユニットテストするためには、私が見つけ回避使用することである@SpringBootTest
と@DirtiesContext
、各試験後の試験と「再配線」に注入成分とSpringコンテキストを作成するために注釈。
しかし、私は(すべてのテストの前に、すべてのコンテキストを構築することを避けるために)そのコンテキストなしで、このコンポーネントのユニットテストしたいです。
(私はここだけのコントローラをテストしたいと)私は何の問題もなく、すべてのネストされた注入を模擬することができます。
したがって、私の質問:どのように私は、このコンポーネントのインスタンスを「得る」ことができますか?どのように私は、各テストの前にそれをリセットすることができますか?( - 私は推測する - 「注入」私のセッターを経由して、私がすることを)どのように私はその後、私の嘲笑ネストされた注射を取得する必要がありますか?
クリスチャンFrommeyer:
プライベートコンストラクタを使用しないでください。プライベートコンストラクタを持つ、その後、まだ唯一の外からそれを呼び出すためにリフレクションを使用してからの利点はありません。あなたがインスタンスを作成するために、同じクラスの静的ファクトリメソッドを使用している場合にのみ、クラスは、クラスがインスタンス化されることを意味しないということをより明確にするための唯一の静的メンバを持っている場合はプライベートコンストラクタを使用したりする必要があります。