0
テストケースでは、デバッグモードで無効な入力に対してアサーションを生成する関数をテストしたいと思います。これは残念ながらCatchテストランナーを停止します。テストランナーが続けるように、このアサーションをバイパスする方法はありますか?ここでデバッグモードでユニットテストでアサートをバイパスする方法はありますか?
は私のテストケースである:
SCENARIO("Simple test case", "[tag]") {
GIVEN("some object") {
MyObject myobject;
WHEN("object is initialized with invalid data") {
// method init generates an assertion when parameters are invalid
bool result = myObject.init(nullptr, nullptr, nullptr, nullptr);
REQUIRE(false == result);
THEN("data processing can't be started") {
}
}
}
}
アサーションは正しいプログラムでは決して起こらないようにしましょう。なぜあなたはそれをユニットテストしていますか?正しいプログラム内で無効なパラメータが発生する場合(たとえば、不正な形式のユーザー入力など)、アサーションの代わりに例外を使用する必要があります。 – Quentin
@Quentin実際には、テストしたい外部ライブラリ(Matlabコードジェネレータで生成されています)です。生成されたコードのラッパーを生成しましたが、現実の生活の中で入力ファイルから来る可能性のある無効なデータをライブラリが処理できる場合は、実際には行っていません。私は、例外の使用が私たちの場合の主張よりも良い解決策かもしれないことに同意します。 – tommyk
これはhttp://stackoverflow.com/q/38533272/102345と非常によく似ています – JBRWilkinson