私はGoogleのC++テストフレームワークGtestを使用しています。私はその実行時間(例えば、実行時間)に対して、 の関数をテストしたいと思います。関数foo()の実行が3msより長い場合、関数foo()は失敗します。 これを達成するためのASSERT文が見つかりませんでした。 gtestにはそのような機能は含まれていませんか?バグがまだ開いているようGoogle Testで実行時間をアサートする方法は?
5
A
答えて
4
5
、このようなシンプルなソリューションを使用しないのはなぜ?
//pseudo code
clock_t t = clock();
foo();
const double work_time = (clock() - t)/double(CLOCKS_PER_SEC);
ASSERT_TRUE(work_time <= 0.003);
0
GoogleTestがこのために印刷する統計情報を使用する方法が見つかりました。これはプログラムレベルですが、サブセット内のサニティチェック速度をTearDownTestCase()
で同じにすることもできます。これは、TestCaseレベルのelapsed_time
メンバ関数が存在するためです。
int main(int argc, char* argv[])
{
::testing::InitGoogleTest(&argc, argv);
auto result(RUN_ALL_TESTS());
::testing::internal::TimeInMillis elapsed(
::testing::UnitTest::GetInstance()->elapsed_time());
ASSERT_LT(elapsed, measurePerf ? 180 * 1000 : 215 * 1000);
return result;
}
代表的な結果:
[==========] 338 tests from 18 test cases ran. (207723 ms total) [ PASSED ] 338 tests.
YOU HAVE 13 DISABLED TESTS
FrameworkTest.cpp(39): error: Expected: (elapsed) < (measurePerf ? 190 * 1000 : 170 * 1000), actual: 207723 vs 170000
関連する問題
- 1. Testで$ watch関数を実行する方法は?
- 2. JSFでアクションの実行時間を測定する方法は?
- 3. 指定された時間プログラムを実行する方法は?
- 4. プログラムの実行時間にコンソールを所有する方法は?
- 5. シェルスクリプト実行の残り時間を取得する方法は?
- 6. ログから実行時間を分析する方法は?
- 7. Dartで実行時の型チェックを実行する方法は?
- 8. 時間間隔で実行可能ファイルを実行するバッチファイル
- 9. Jmeter-Thread-一定の時間間隔でユーザーのセットを実行する方法
- 10. ランダムな時間間隔で無作為に実行を中断する方法
- 11. "test"の前に "package"を実行する方法
- 12. LAMP with Hudson:毎時間SQLステートメントを実行する方法
- 13. 実行時間の楕円を変形する方法
- 14. キュウリステップの実行時間を測定する方法
- 15. ダーツは、小さなコードの実行時間を測定する方法です
- 16. 実行時間このアルゴリズムの実行時間は何ですか
- 17. アプリを一度に実行する方法と変更のない別の時間を実行する方法
- 18. JSP/Servletで最大実行時間を設定する方法は?
- 19. Cでfork()システムコールの実行時間を計算する方法は?
- 20. Ruby/Rails/Passenger/Nginxで実行時間制限を設定する方法は?
- 21. javascriptで関数の実行時間を制限する方法は?
- 22. 実行時にcombinationfieldのクエリを実行する方法は?
- 23. 測定方法の実行時間の有効な方法
- 24. 実行中にorg.quartz.JobDetailを停止する時間を決定する方法は?
- 25. テンソルフローグラフで各ノードを実行する時間を取得する方法
- 26. NUnitからMS TESTへのアサート例外
- 27. SQL実行時間を調べる方法
- 28. 「コンパイル時間」と「実行時間」の違いは何ですか?
- 29. Box2dで弾丸時間を実装する方法は?
- 30. 時間ディメンションでファクトテーブルを実際にスライスする方法は? (SSAS)
私は精度が十分に高くない怖い... 'QueryPerformanceCounterの(のようなもの)'方が良いだろう。 – Chen
それはちょうどメタコード、あなたは時計の代わりにあなたが望むものを使用することができます。 – fghj
通常、 'clock()'の精度が低いので、それを指摘しておきます。 – Chen