は、私は、それがクラスA、B、C、およびD、例えば、定義済みの一連で動作要件を持つ関数テンプレートC++テンプレートのテストを書くには?
template<T> void f(T);
からなるテンプレートライブラリを書いて、次のコンパイルする必要がありますしていたと:
テストフレームワークは、私がテストコードのコンパイルで失敗するのではなく、実行時に、この要件をキャプチャし、テストケースを記述するために使用することができますtemplate<> void f(A);
template<> void f(B);
template<> void f(C);
template<> void f(D);
?別の言い方をすれば、フレームワークでランタイムのテンプレートをインスタンス化し、それらのサブセットが失敗した場合にきれいにフォーマットされたエラーレポートを生成したいと思います。
私はテストフレームワークをあきらめることができ、上の4行を含む単純なccファイルを単純に書くことができます。しかし、テストステータスレポートを生成するための標準的なテストケースに、この要件を組み込むことができれば幸いです。たとえば、
test f works with A: passed.
test f works with B: passed.
test f works with C: failed! Cannot cast type C!
test f works with D: passed.
3 of 4 tests passed.
1 of 4 tests failed.
+1:これはコンパイラのテスト方法です:p LLVM/Clangの 'lit'フレームワークを見てみましょう。これは、テストの隣のコメントに予想されるエラーを指定することができます。 –