首页 > 解决方案 > 谷歌测试不打印通过/失败。异常退出

问题描述

当我运行我的 gtest 时,我得到了这个输出

[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from Test
[ RUN      ] Test.Foo

并在此之后退出。

我的代码如下:

//Exception file
class myex : public std::runtime_error {
  myex(const std::string& reason)
        : std::runtime_error(reason){
  }
}

//TestFile

class Test : public testing::Test {

public:
 MockClass mc; // Mock class inherits from Iclass
 std::unique_ptr<classToTest> obj;

 void SetUp(){
   obj = std::make_unique<classToTest>(mc);
 }

 void bar() {
  std::string error = "error";
  throw myex(error);
 }
}

TEST_F(Test, Bar) {
 EXPECT_THROW(bar(), myex); //works. Print PASS.
}

TEST_F(Test, Foo) {
 EXPECT_THROW(obj->fn(mc), myex); // doesnot work. Prints not PASS/FAIL.
}

TEST_F(Test, test1) {
 obj->fn(mc); // prints : unknown file: error: (correctly prints the reason)
}

//ClassToTest file
class classToTest {
 void fn(Iclass obj) {
   obj.some_fn();
   throw myex("Error has occurred");
 }
}

我不明白为什么从 classToTest 抛出的错误被 gtest 识别为

未知文件:错误:C++ 异常...

而且,为什么它不显示 PASS/FAIl

EXPECT_THROW(fn(), myex)

但奇怪地退出了。

如果我犯了任何错误,请告诉我,如果您需要更多信息。TIA。

标签: c++c++11googletest

解决方案


推荐阅读