gtest
とgmock
を私のアプリケーションで使用しており、gtest
のSetup()
とTeardown()
関数の目的を理解できませんでした。 私の理解によると、それぞれTEST_F
実行前に関数が呼び出され、最後にTeardown()
が呼び出されます。同じ目的で::testing::Test
クラスconstructor
とdestructor
を使用できますか?これらの機能が正確にどこで使用されていますか?TearDown()とSetup()関数の利点は何ですか?
0
A
答えて
1
これらの機能を使用して、すべてのテストケースで共有される特定の状態のリソースを確立できます。特に、テストケースに例外が含まれている場合。
をあなたはまだ、次まれにセットアップ()/ティアダウン()を使用することもできます。:
- ティアダウン動作が投げることができればそれは言われています彼らのdocumentationから
例外では、デストラクタをスローすると未定義の動作が発生し、通常はすぐにプログラムが終了するため、デストラクタとは対照的に
TearDown()
を使用する必要があります。コンパイラで例外が有効になっていると、多くの標準ライブラリ(STLなど)がスローされる可能性があることに注意してください。したがって、例外の有無にかかわらず動作する移植可能なテストを作成する場合は、TearDown()
を使用することをお勧めします。- フラグが指定されている場合、アサーションマクロは例外をスローします。したがって、このフラグを使用してテストを実行する場合は、デストラクタでGoogle Testアサーションを使用しないでください。
- コンストラクタまたはデストラクタでは、このオブジェクトに対して仮想関数呼び出しを行うことはできません。 (仮想として宣言されたメソッドを呼び出すことはできますが、静的にバインドされます)。したがって、派生クラスでオーバーライドされるメソッドを呼び出す必要がある場合は、
SetUp()
/TearDown()
を使用する必要があります。
関連する問題
- 1. Robotium setUp()とtearDown()メソッド
- 2. Junit Before/Afterとsetup/teardown
- 3. py.test全テストスイート用のSetUp/TearDown
- 4. Pythonの関数で関数を定義する利点は何ですか?
- 5. 静的関数の利点は何ですか?
- 6. テストにはSetUpとTearDownメソッドに[RequiresSTA]が必要ですか?
- 7. Fitnesse SetUp/TearDownをバイパスする方法は?
- 8. Python 3を使用する利点/利点は何ですか?
- 9. プロキシキャッチサーバーを使用する利点と欠点は何ですか?
- 10. "ラムダ式"の利点は何ですか?
- 11. git lfsの利点は何ですか?
- 12. WPFツールバーの利点は何ですか?
- 13. フレームポインタの利点は何ですか?
- 14. pimcoreの利点は何ですか?
- 15. Javascriptモジュールパターンの利点は何ですか?
- 16. ServletRequestWrapperの利点は何ですか?
- 17. マルチコアの利点は何ですか?
- 18. この間接関数呼び出しの利点は何ですか?
- 19. 定数と変数を定数で比較する利点は何ですか?
- 20. オブジェクトを関数型プログラミング言語で使用する利点は何ですか?
- 21. PHPで匿名関数を使用する利点は何ですか?
- 22. ユニットテストをLaravelで行ったときのsetUp/tearDownフィクスチャ
- 23. 約束を返す関数にasyncをプリペンドする利点は何ですか?
- 24. nHibernateのICriteriaとICriterionの違いと利点は何ですか?
- 25. ゲームを作る - セキュア変数の利点は何ですか?
- 26. Pythonでのconcurrent.futuresとmultiprocessingの利点は何ですか?
- 27. RDFとトリプルストレージのNeo4jへの利点は何ですか?
- 28. ローカルストレージのクッキーとセキュリティパースペクティブの利点は何ですか?
- 29. JavaのAnonymousクラスの使用例と利点は何ですか?
- 30. セットとセットベースの操作の利点は何ですか?
例を挙げてください。リソースをテストクラスに追加して共有できますか?リソースがテストクラスの一部であれば、それはテスト関数間で共有されるでしょう、そうですか? –
3番目の点は、TEST_F関数からSetUp()とTearDown()関数を呼び出すことができるということですか?私は第3のポイントを理解することができませんでした。 –
@GilsonPJ 'virtual'関数を呼び出すには、テストクラスの完全に構築されたオブジェクトインスタンスが必要です。これらは、コンストラクタ本体の内部では実行できません。 –