私は C++ の宿題として long integers ライブラリに取り組んでおり、教師はそのインターフェイスの使用例として提供してくれました。このファイルの一部を次に示します。
void test_conversions()
{
int ordinary = 42;
lint long_int(ordinary);
long_int = ordinary;
ordinary = static_cast<int>(long_int); // ok
std::string s("-15");
lint z(s);
z.to_string() == s; // this should be true
}
void failed_conversions_test()
{
int ordinary = 42;
std::string str = "-42";
lint x = 5;
ordinary = x; // must be compilation error!
x = str; // must be compilation error!
str = x; // must be compilation error!
}
ビルド プロセス中にこのファイルの互換性をテストしたいと考えています。ご覧のとおり、4 つのテストが必要です。1 つはコンパイルの成功 ( test_conversions
) で、3 つは で示されている失敗のそれぞれですfailed_conversions_test
。int main()
スタブを追加して を呼び出すことADD_TEST
で、コンパイルの成功チェックを簡単に実装できますCMakeLists.txt
が、CMake に残りの 3 つのテストをコンパイルして、コンパイルが失敗したことを確認するにはどうすればよいでしょうか?
「すべてのことを実行するカスタム スクリプトを実行する」のようなものを追加することを考えていましたが、これはコンパイラとプラットフォームに大きく依存し、良い方法とは思えません。
ありがとうございました。