2016-08-23 2 views
-1

Gibt es in Google Test einige ASSERT_AND_RETURN Makros, die etwas testen, und wenn es falsch ist, löst eine Assertion aus und gibt einen Wert zurück?Makro "Bestätigen und zurückgeben" in Google Test?

+2

ASSERT_xxx wird den Test nicht bestehen und es in seinen Schienen zu stoppen. Meintest du EXPECT_AND_RETURN? –

+0

Warum würde ich es erwarten, wenn erwartet in gtest bedeutet, weiter zu machen? Ich meine etwas in der Art: bool Foo() { ... ASSERT_AND_RETURN (x! = 0, falsch); int y = 1/x; ... } –

Antwort

1

Eigentlich alle ASSERT_XXX gibt von Funktion zurück - aber es gibt keinen Wert zurück - es wird angenommen, dass die Funktion (in den meisten Fällen Funktionen von TESTxx Makros erstellt) sind Void-Funktion.

Dieses Problem tritt manchmal auf, wenn Sie ASSERT_XXX innerhalb der von einer anderen Funktion aufgerufenen Funktion verwenden. Um zu überprüfen, ob die Funktion auf Assertion fehlgeschlagen - Sie verwenden müssen ASSERT_NO_FATAL_FAILURE

Siehe Beispiel

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]); 
} 
Verwandte Themen