私は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. Google Cloudでクエリの実行時間を測定する方法
- 2. x時間(分と時間)でタスクを実行する方法
- 3. Testで$ watch関数を実行する方法は?
- 4. laravelでサーバーの実行時間を表示する方法は?
- 5. JSFでアクションの実行時間を測定する方法は?
- 6. DBCPでクエリの実行時間を設定する方法は?
- 7. .NETでMSTestの実行時間を短縮する方法は?
- 8. は、実行中の時間をredueceする方法、パンダは
- 9. ターミナルでサイレントモードでMocha Testを実行する方法
- 10. Test :: Scriptからstdoutを実行する方法は?
- 11. 実行時にカスタムコミット間隔を実装する方法
- 12. カスタムページとURLの実行時間を作成する方法は?
- 13. 指定された時間プログラムを実行する方法は?
- 14. プログラムの実行時間にコンソールを所有する方法は?
- 15. アルゴリズムの実行時間を確認する方法は?
- 16. xgboost実行時間を制限する方法は?
- 17. sidekiqからジョブ実行時間を取得する方法は?
- 18. ログから実行時間を分析する方法は?
- 19. シェルスクリプト実行の残り時間を取得する方法は?
- 20. TestNGでTestクラスの最初のテストを実行する方法
- 21. Googleスプレッドシートスクリプトの実行時間制限
- 22. Google App Script:広い実行時間
- 23. Google Appsスクリプト実行時間6分
- 24. コレクションでの最大実行時間を短縮する方法
- 25. databricksノートブックでコマンドセルの実行時間を計算する方法
- 26. 時間のかかる計算の実行時間を短縮する方法
- 27. Dartで実行時の型チェックを実行する方法は?
- 28. 時間間隔で実行可能ファイルを実行するバッチファイル
- 29. NUnitでDataTableをアサートする方法は?
- 30. ssmsで実行時間をミリ秒で表示する方法は?
私は精度が十分に高くない怖い... 'QueryPerformanceCounterの(のようなもの)'方が良いだろう。 – Chen
それはちょうどメタコード、あなたは時計の代わりにあなたが望むものを使用することができます。 – fghj
通常、 'clock()'の精度が低いので、それを指摘しておきます。 – Chen