2013-07-31 11 views
12

Używam testów sparametryzowanych w gtest. Na przykład, jeśli piszęCzy mogę nadać lepsze nazwy testom sparametryzowanym w gtest?

INSTANTIATE_TEST_CASE_P(InstantiationName, 
        FooTest, 
        ::testing::Values("meeny", "miny", "moe")); 

następnie na wyjściu widzę nazw testowych, takich jak

InstantiationName/FooTest.DoesBlah/0 for "meeny" 
InstantiationName/FooTest.DoesBlah/1 for "miny" 
InstantiationName/FooTest.DoesBlah/2 for "moe" 

Czy istnieje jakiś sposób, aby nazwy te bardziej znaczące? Chciałbym zobaczyć

InstantiationName/FooTest.DoesBlah/meeny 
InstantiationName/FooTest.DoesBlah/miny 
InstantiationName/FooTest.DoesBlah/moe 
+0

Przynajmniej jeśli wystąpi błąd, GTest daje to: 'Test/FooTest.DoesBlah/0, gdzie GetParam() = (000000013F6F2C00 wskazuje na" meeny ")' – Lev

Odpowiedz

2

dwa sposoby: (http://osdir.com/ml/googletestframework/2011-09/msg00005.html)

1) łata istniejącą PrettyUnitTestPrinter drukować nazwiska testowych; coś w rodzaju:

--- a/gtest-1.7.0/src/gtest.cc 
+++ b/gtest-1.7.0/src/gtest.cc 
@@ -2774,6 +2774,7 @@ void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) { 
void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) { 
    ColoredPrintf(COLOR_GREEN, "[ RUN  ] "); 
    PrintTestName(test_info.test_case_name(), test_info.name()); 
+ PrintFullTestCommentIfPresent(test_info); 
    printf("\n"); 
    fflush(stdout); 
} 

2) Napisz nowy testListener, aby wydrukować wyniki testu, jak chcesz. (https://code.google.com/p/googletest/source/browse/trunk/samples/sample9_unittest.cc) GTest pozwala zarejestrować nowy tester odbiornik (i wyrejestrować wbudowaną wartość domyślną), umożliwiając dość elastyczne dostosowywanie wyników testu. Zobacz link na przykład kod.

Powiązane problemy