我有一个包含SetUp()
和TearDown()
的测试类,带有某些输入,并使用各种不同的输入运行。当使用某些输入时,将在SetUp()
内而不是在正文中抛出异常。这是预期的,虽然它不是测试的严格部分,但我不希望将SetUp()
代码移到测试体中,仅用于此特定实例。但是,我找不到在这里捕获异常的方法。我的代码类似于以下内容:
struct MyInputs {
int first_;
const char* second_;
const char* third_;
};
测试类是非常标准的gtest样板:
class MyTestClass : public ::testing::TestWithParam<MyInputs> {
public:
virtual void SetUp();
virtual void TearDown() {};
// etc...
}
void MyTestClass::SetUp() {
// Do some stuff here using MyInputs.first_ which may throw
// a "thrown from here" exception
}
我有一个标准的测试闭包,虽然它真的与这里的问题无关 - 它没有达到这个目的。
TEST_P(MyTestClass,aSpecificTest) {
// ... some stuff ...
}
然后我用多个输入创建循环:
INSTANTIATE_TEST_CASE_P(MultipleTests,
MyTestClass,
::testing::Values( MyInputs( 1234, "ABC", "XXX"), // <-- No exception thrown
MyInputs( 5678, "DEF", "ZZZ") ) ); // <-- Exception thrown
当我运行代码时,我收到错误:
C++ exception with description "thrown from here" thrown in SetUp().
当它遇到'坏'输入时。有没有办法可以捕获这个并忽略或设置EXPECT_
类型子句?我意识到我可以简单地在try
中添加catch
/ SetUp()
,但我希望我可以在某个地方使用EXPECT_THROW进行测试。