はじめに
GoogleTestのアサーションには、致命的なアサーションと致命的ではないアサーションという2つのアサーションがあります。言葉だけではぜんぜん意味がわからないので、実際に試してみました。
致命的なアサーションを使ったテスト
はじめに致命的なアサーションを使ったテストを実行してみます。
#include "stdafx.h" #include <gtest/gtest.h> int _tmain(int argc, _TCHAR* argv[]) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } TEST(TestCaseName1, TestName1) { ASSERT_TRUE(false); ASSERT_TRUE(false); }
このテストを実行すると、最初のASSERT_TRUE(false);だけが実行され、2つめのASSERT_TRUE(false);が実行されません。このように、アサーションが失敗した場合に後続の処理を行わずに、関数の実行をストップさせるのが致命的なアサーションです。
致命的ではないアサーションを使ったテスト
つづいて、致命的なアサーションを使ったテストを実行してみます。
#include "stdafx.h" #include <gtest/gtest.h> int _tmain(int argc, _TCHAR* argv[]) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } TEST(TestCaseName1, TestName1) { EXPECT_TRUE(false); EXPECT_TRUE(false); }
このテストを実行すると、最初のASSERT_TRUE(false);に失敗しても2つめのASSERT_TRUE(false);が実行されていることが確認できます。アサーションが失敗しても、以降の処理を継続するのが致命的ではないアサーションです。
まとめ
致命的なアサーションと致命的ではないアサーションの違いは、テストに失敗した場合に以降の処理をするかしないかの違いです。
現場の仕事がバリバリ進む ソフトウェアテスト手法
posted with amazlet at 11.12.14
高橋 寿一 湯本 剛
技術評論社
売り上げランキング: 82791
技術評論社
売り上げランキング: 82791