単体テストに関しては、本番コードにテスト関連のコードを含めるべきではないと教えられました。
さて、単体テストを試みるたびに、そのルールを破っているような気がします。
アセンブリの内部にクラスがありXyzzy
ます。それを別のクラスに依存性注入してからスタブ化して、他のクラスを分離してテストできるようにしたいので、インターフェイスを作成しますIXyzzy
。おっと、今私は実際にテストのためだけにあるコードを本番環境に持っています。さらに悪いことに、私はインターフェースとは何かに反対しました(それが何であるかではなく、実装者が何ができるかを説明します)。XyzzyのパブリックインターフェイスとIXyzzyはまったく同じであり、他の誰も(スタブを除いて)IXyzzyを実装していません。
それは私には悪いことのように思えます。
Overridable
抽象基本クラスを作成したり、Xyzzy /でテストしたいすべてのパブリックメソッドを作成したりできますvirtual
が、Xyzzyは継承用に設計されておらず、YAGNIの観点からは継承されないため、これも間違っています。
アンチパターンをテストすることのみを目的として、単一の実装者インターフェイスを作成していますか?より良い選択肢はありますか?