31

その機能のドキュメントは、Google テストの概要機能にあり、
https ://github.com/google/googletest/blob/master/docs/advanced.md#death-tests で詳しく説明されているため、かなり重要なようです。

これらは標準のように見えますassert()が、Google Test の一部であるため、xUnit テスト フレームワークです。したがって、それらの死のテストを使用することの実際の使用法または利点は何なのか疑問に思います。

4

2 に答える 2

26

アサーションは、関数が現在のプロセスで実行された場合にプログラムの終了を引き起こすことを確認するためにあります (詳細は、死のテストがサブプロセスから呼び出され、死にもかかわらずテストを続行できることを説明しています)。これは、一部のコードが失敗時のプログラムの終了/中止を保証する可能性があるため (たとえば、回復不能なエラーがあった場合)、単体テストでは、関数が文書化された動作に準拠していることを確認する必要があるため、それが何であるかに関係なく役立ちます。

wikiページの説明は、実際にそれを最もよく説明しています:

多くのアプリケーションには、条件が満たされない場合にアプリケーションの障害を引き起こす可能性のあるアサーションがあります。プログラムが既知の良好な状態であることを確認するこれらのサニティ チェックは、プログラムの状態が破損した後、可能な限り早い時期に失敗するように設定されています。アサーションが間違った条件をチェックすると、プログラムは誤った状態で処理を続行する可能性があり、メモリの破損、セキュリティ ホール、またはさらに悪いことにつながる可能性があります。したがって、そのようなアサーション ステートメントが期待どおりに機能することをテストすることは非常に重要です。

于 2010-09-13T08:15:36.873 に答える
2

あなたのリンクの紹介はそれをかなりよく説明していると思いました:

多くのアプリケーションには、条件が満たされない場合にアプリケーションの障害を引き起こす可能性のあるアサーションがあります。プログラムが既知の良好な状態であることを確認するこれらのサニティ チェックは、プログラムの状態が破損した後、可能な限り早い時期に失敗するように設定されています。アサーションが間違った条件をチェックすると、プログラムは誤った状態で処理を続行する可能性があり、メモリの破損、セキュリティ ホール、またはさらに悪いことにつながる可能性があります。したがって、そのようなアサーション ステートメントが期待どおりに機能することをテストすることは非常に重要です。

これらの前提条件チェックによりプロセスが終了するため、このようなテストを終了テストと呼びます。より一般的には、プログラムが予期した方法で終了することを確認するテストは、death テストでもあります。

それのどの部分が意味をなさないのですか?

于 2010-09-13T08:18:25.087 に答える