2014-10-13 1 views
0

Google C++ 테스팅 프레임 워크 (gtest)는 "death tests"을 제공합니다. 테스트를 통해 (분기 된) 프로세스가 종료되었다고 주장 할 수 있으며 종료 코드에 조건자를 적용 할 수 있습니다. 프로세스 을 종료하지 않았다고 주장 할 수있는 방법이 있습니까?Google C++ Testing Framework에서 프로세스가 * 죽지 않는다고 주장 할 수 있습니까?

내가 얻으려고하는 것은 (예를 들어) 액세스 위반으로 인해 그 중 하나가 죽어도 내 나머지 테스트를 실행하는 것입니다.

테스트 결과는 다음과 같습니다. ASSERT_NO_EXIT는 존재하지 않습니다.

GTEST_TEST(MyTests, MyTest) 
{ 
    GTEST_ASSERT_NO_EXIT({ 
     int val1 = 1; 
     int val2 = 2; 
     GTEST_ASSERT_EQ(val2, val1 + 1); 
    }); 
} 

답변

0

이것은 트릭을 수행했습니다.

GTEST_TEST(MyTests, MyTest) 
{ 
    GTEST_ASSERT_NO_DEATH({ 
     int val1 = 1; 
     int val2 = 2; 
     GTEST_ASSERT_EQ(val2, val1 + 1); 
    }); 
} 
+0

또한 단지 테스트를 쓸 수를 다음과 같이

#include "gtest/gtest.h" #include <stdlib.h> #define GTEST_ASSERT_NO_DEATH(statement) \ ASSERT_EXIT({{ statement } ::exit(EXIT_SUCCESS); }, ::testing::ExitedWithCode(0), "") 

나는 위의 매크로를 사용할 수 있었다. 테스트 프로세스가 충돌하면 뭔가 잘못되었다고 생각할 수 있습니다. –

+2

테스트중인 문이 exit (0);을 호출하면이 테스트도 통과됩니다. – VladLosev