2016-08-23 1 views
-1

Google 테스트에 무언가를 테스트하는 ASSERT_AND_RETURN 매크로가 있습니까? 이것이 틀리면 어설 션을 제기하고 값을 반환합니까?Google Test에서 "Assert and return"매크로?

+2

ASSERT_xxx 테스트를 실패하고 해당 트랙에 중단됩니다 ASSERT_NO_FATAL_FAILURE

예를 참조 사용해야합니다. EXPECT_AND_RETURN을 원하셨습니까? –

+0

gtest에서 기대하는 것이 계속 앞으로 나아갈 것이라면 나는 그것을 기대라고 부르는 이유는 무엇입니까? 다음과 같은 의미입니다. bool Foo() { ... ASSERT_AND_RETURN (x! = 0, false); int y = 1/x; ... } –

답변

1

실제로 모든 ASSERT_XXX은 함수에서 반환되지만 값을 반환하지 않습니다. 함수 (대부분 TESTxx 매크로로 만든 함수)는 void 함수라고 가정합니다.

다른 기능에서 호출 된 함수 내에 ASSERT_XXX 함수를 사용하면이 문제가 종종 발생합니다. 기능이 어설 션에 실패 할 경우 확인하려면 - 당신은

void assertNotNull(int *p) 
{ 
    ASSERT_THAT(p, NotNull(p)); 
} 
void assertSizeIs(int actual, int expected) 
{ 
    ASSERT_EQ(actual, expected); 
} 
TEST(A, B) 
{ 
    std::pair<int*,int> p = createArray(7); 

    ASSERT_NO_FATAL_FAILURE(assertNotNull(p.first)); 
    ASSERT_NO_FATAL_FAILURE(assertSizeIs(p.second, 7)); 

    for(int i = 0; i < 7; ++i) 
     ASSERT_EQ(0, p.first[i]); 
}