Je suis nouveau sur Google Test et je joue avec les exemples fournis. Mon problème est, lorsque je présente un échec et définir GTEST_BREAK_ON_FAILURE=1
(ou utiliser l'option de ligne de commande), GTest segfault. Je considère this example. Si j'insérer quelque chose comme cela dans l'un des tests, je vais commencer à obtenir le segfault:Pourquoi Google Test segfault?
EXPECT_EQ(8, 2*3);
Je répète, c'est seulement quand je l'ai également mis GTEST_BREAK_ON_FAILURE=1
. J'ai couru depuis la ligne de commande et aussi avec gdb. Si cette variable d'environnement n'est pas définie, elle signale l'erreur mais ne segfault pas.
Tout indice de ce qui pourrait causer ce que je fais mal? J'ai cherché un problème similaire, mais je n'ai encore rien rencontré.
FYI J'utilise la version 1.7.0 de Google Test fonctionnant sur 64 bits CrunchBang Linux 11 "Waldorf".
modifier exemple de code:
// Tests factorial of positive numbers.
TEST(FactorialTest, Positive) {
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(2, Factorial(2));
EXPECT_EQ(6, Factorial(3));
EXPECT_EQ(40320, Factorial(8));
}
sortie Debugger:
(gdb) run
Starting program: /home/yourfavoriteprotein/bin/cpp_unit_test_frameworks/gtest-1.7.0/samples/mytest
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Running main() from test_main.cc
[==========] Running 6 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 3 tests from FactorialTest
[ RUN ] FactorialTest.Negative
[ OK ] FactorialTest.Negative (0 ms)
[ RUN ] FactorialTest.Zero
[ OK ] FactorialTest.Zero (0 ms)
[ RUN ] FactorialTest.Positive
sample1_unittest.cc:112: Failure
Value of: 2*3
Actual: 6
Expected: 8
Program received signal SIGSEGV, Segmentation fault.
0x0000000000413427 in testing::UnitTest::AddTestPartResult(testing::TestPartResult::Type, char const*, int, std::string const&, std::string const&)()
(gdb) quit
ah, merci. Encore nouveau à SO :) – liang
Beaucoup mieux maintenant! –