1

TDD で最初に学べることは、物事をテスト可能にするには、それらを疎結合にする必要があるということです。そして、ほとんどの言語では、これは、インターフェイスを介した結合のみを分離し、依存関係の注入を延期することで達成されます。これにより、テストしたい実装にモック オブジェクトをドッキングできるようになります。

さて、C++ ではもちろん、抽象クラスをインターフェイスとして使用して文字へのアプローチに従うことができますが、コンパイル時に依存関係を解決するテンプレート プログラミングの力もあります。

標準的なアプローチでTDDを実行する方法の例をあまりにも多く見てきましたが、テンプレートプログラミングの例はゼロからジルチの間です。はい、ポリシー テンプレート パラメーターを使用して実装の選択を延期するという Alexandrescu のアプローチを見てきましたが、なぜこのアプローチが普及していないのか疑問に思っています。それは困難や厄介な副作用につながりましたか?

要するに、テンプレートとコンパイル時のポリモーフィズムを使用してプログラミングするときに TDD に従うための最良のアプローチは何ですか?

4

1 に答える 1

1

ほとんどの場合、継承による依存性注入と実際に違いがあるとは思いませんでした。テンプレートに必要な概念を実装するスタブ/モック クラスを作成し、そのクラスでテンプレートをインスタンス化し、そこから先に進みます...それが抽象インターフェイスであった場合と同じように、それを継承し、オブジェクトに注入します。 (おそらく建設中に)テストしたい、そして私のテストを実行したい...

非常に簡単な例:

template < typename T >
T* create();

struct object {};

TEST_CASE(itCreates) {
  object * o = create<object>();
  o != 0;
  delete o;
}
于 2012-05-20T15:50:18.783 に答える