Google 测试:未知文件失败

问题描述 投票:0回答:2

问题:我正在尝试使用 GTest 作为测试框架的作业。该代码定义了一个“通用”文件,其中为系统定义了异常,我在代码中使用它:

throw ExceptionType::OUT_OF_RANGE;

但是,当运行 GTest 时,我收到以下消息:

unknown file: Failure
Unknown C++ exception thrown in test body. 

我的问题是: 我如何使用 GTest 框架运行 gdb 来追踪这个错误,它与代码或其他内容中定义的异常相关。

这是失败的测试:

/** Test that matrix initialization works as expected */

    TEST(StarterTest, InitializationTest) {
      auto matrix = std::make_unique<RowMatrix<int>>(2, 2);
    
      // Source contains too few elements
      std::vector<int> source0(3);
      std::iota(source0.begin(), source0.end(), 0);
      EXPECT_TRUE(ThrowsBustubException([&]() { matrix->FillFrom(source0); }, ExceptionType::OUT_OF_RANGE));
    
      // Source contains too many elements
      std::vector<int> source1(5);
      std::iota(source1.begin(), source1.end(), 0);
      EXPECT_TRUE(ThrowsBustubException([&]() { matrix->FillFrom(source1); }, ExceptionType::OUT_OF_RANGE));
    
      // Just right
      std::vector<int> source2(4);
      std::iota(source2.begin(), source2.end(), 0);
      EXPECT_NO_THROW(matrix->FillFrom(source2));
    
      for (int i = 0; i < matrix->GetRowCount(); i++) {
        for (int j = 0; j < matrix->GetColumnCount(); j++) {
          const int expected = (i * matrix->GetColumnCount()) + j;
          EXPECT_EQ(expected, matrix->GetElement(i, j));
        }
      }
    }
c++ c++17 googletest
2个回答
2
投票

你可以试试这个:

throw Exception(ExceptionType::OUT_OF_RANGE, "out of range");

您应该抛出属于标准库的异常,并使用自定义异常(ExceptionType::OUT_OF_RANGE)进行填充。


0
投票

问题是如何用

gdb
发现问题。 运行 gdb,在执行
run
之前,先执行
catch throw
gdb
将在引发异常的行处中断。 凭记忆打字:

% gdb --args myGtestExecutable
(gdb) catch throw
(gdb) run
...
break at line xxx

(您的问题主题是关于“未知文件:失败”,这似乎不是您的实际问题...我想知道“未知文件:失败”是什么意思。这似乎是一个错误gtest 捕获异常)

© www.soinside.com 2019 - 2024. All rights reserved.