代码之家  ›  专栏  ›  技术社区  ›  Ken Y-N

在谷歌测试中期待没有死亡

  •  0
  • Ken Y-N  · 技术社区  · 6 年前

    EXPECT_DEATH() EXPECT_NO_DEATH() 一套还是类似的?例如:

    void should_i_die(bool die)
    {
        if (die) { printf("Aaargh!"); exit(-1); }
        else       printf("I'm not dead yet!");
    }
    
    EXPECT_DEATH(should_i_die(true), "Aaargh.*");
    EXPECT_NO_DEATH(should_i_die(false), ".*"); // What should be here?
    

    只有一个独立的:

    should_i_die(false);
    EXPECT_TRUE(true); // We're not dead if we reach here
    

    感觉有点像逃避责任,有更好的办法吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Hasturkun    6 年前

    我认为这样的方法应该有效(尽管我自己还没有尝试过)。

    EXPECT_EXIT({should_i_die(false); fprintf(stderr, "Still alive!"); exit(0);},
        ::testing::ExitedWithCode(0), "Still alive!");
    

    退出是必要的,因为活过死亡测试的结束被认为是失败的。