質問

Guiceはテスト可能なコードを生成することを目的としており、単体テストには必要ないと言われました。しかし、Guiceを使用せずにSingleton(@Singleton)をテストするにはどうすればよいですか?

役に立ちましたか?

解決

単体テストでは、Guice(またはDIフレームワーク)を必要しません。通常、SUTは十分に小さいため、手動のDIで十分です。

「シングルトンをテストする」方法について説明します。他のクラスをテストするのと同じ方法で、これはスコープとしてのシングルトンの美しさの一部です。テストメソッドで、「シングルトン」の新しいインスタンスを作成し、テストしてから破棄します。 SUTが以前のテストの影響を受けたくないので、デザインパターンではなくスコープを使用しているという事実が良いことになるように、テストごとに異なる依存関係を設定できるようにする必要があります。テストするために特別なことをする必要はありません。

他のヒント

実際、私の個人的な見解は、DIフレームワークを必要とするテストは疑いなく見ることができるということです。それは、単体テストではなく、統合テストのようです。 単体テストはスタンドアロンである必要があり、テストしたくないもののモックバージョンを含むすべての依存関係を手動で明示的に配線する必要があります。 主流のデベロッパーの用語「ユニットテスト」では、希釈される可能性があるのは、開発者が作成したテストを意味します。ただし、この用語が適切に使用されているという意味ではありません。

その観点から言えば、いいえ、GuiceまたはSpring DIに依存する必要があります(おそらくそうすべきではありません!)。

Guice(など)の素晴らしい点は、実際にはこれです。フルシステムに使用することで、DIなしでテストをはるかに簡単に行うことができます。

だから私は最高評価の答えが正しいと思う:シングルトンをテストするには、それを作成してテストするだけだ。特別な魔法はありません。

Guiceは依存性注入を行いますが、テストでも必要です。
Guiceを使用すると、注入されたクラスの実装をモックオブジェクト(実際のオブジェクトではなくスタブ)に簡単に変更できます。したがって、テストはスタブ環境で実行でき、アプリの他のレイヤーとは無関係に、より高速にテストできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top