私は長年 EasyMock のファンであり、SO のおかげで、PowerMock への参照に出くわし、コンストラクターと静的メソッドをモックする機能に出会いました。どちらも、テストをレガシー コードベースに後付けするときに問題を引き起こします。
明らかに、単体テスト (および TDD) の大きな利点の 1 つは、それが (力?) よりクリーンな設計につながる方法であり、PowerMock の導入はそれを損なう可能性があるように私には思えます。これは主に次のように現れます。
- コラボレーターを注入するのではなく初期化することに戻る
- メソッドを共同作業者が所有するのではなく、静的を使用する
これに加えて、自分のコードがテスト用にバイトコードで操作されていることについて、何かがうまくいきません。具体的な理由は言えませんが、本番用ではなくテスト用なので少し不安です。
私の現在のギグでは、人々がコーディングの実践を改善する方法として、単体テストを本当に推進しています. PowerMock を方程式に導入すると、人々はそのステップをいくらかスキップできるようになるので、私はそれを使い始めるのが嫌です. そうは言っても、それを利用することで、クラスのテストを開始するために必要なリファクタリングの量をどこで削減できるかがよくわかります。
私の質問は、これらの機能に PowerMock (または他の同様のライブラリ) を使用した人々の経験は何ですか?それらを利用しますか?また、テストが設計にどの程度影響を与えることを望んでいますか?