web-dev-qa-db-ja.com

グーグルテスト、デステストとは何ですか

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

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

30
Wernight

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

Wikiページの説明は本当にそれを最もよく説明しています:

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

20

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

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

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

何が意味をなさないのですか?

2
Jon Cage