Unit testing 在Google测试框架中的for循环中运行EXPECT\u THROW
我试图创建运行测试所需的字符串数组。我就是这样做的Unit testing 在Google测试框架中的for循环中运行EXPECT\u THROW,unit-testing,googletest,Unit Testing,Googletest,我试图创建运行测试所需的字符串数组。我就是这样做的 TEST(ParseTest, UnknownType) { String test_strings[] = { String("X 1024\n"), String("AB 1024\n") }; int test_strings_size = sizeof(test_strings) / sizeof(test_strings[0]); for (int idx = 0;
TEST(ParseTest, UnknownType) {
String test_strings[] = {
String("X 1024\n"),
String("AB 1024\n")
};
int test_strings_size = sizeof(test_strings) / sizeof(test_strings[0]);
for (int idx = 0; idx < test_strings_size; idx++) {
Transaction transaction;
String transaction_type = test_strings[idx];
EXPECT_THROW(transaction.parse(transaction_type), ParseError);
}
}
当这实际上应该运行两个测试用例时,它只抱怨一个。我遗漏了什么吗?这里有一些澄清: 您实际上正在运行一个测试用例,请参见以下定义:
TEST(TestCase, TestName)
因此,在测试结果中,当它说“从1个测试用例运行1个测试”时,“测试”指的是您的TestName字段(在您的案例中为UnknownType),而测试用例显然指的是“测试用例”(ParseTest)。在特定测试中设置多少“断言”或“期望”并不重要。它最终将作为一项测试报告
所以如果你有
TEST(TestCase1, Test1){
.....
}
TEST(TestCase1, Test2){
....
}
它将报告为:运行1个测试用例中的2个测试
因此,假设“x1024”将导致异常,我怀疑“ab1024”(无异常)的结果是最终报告的结果 我会写一篇文章来获得更方便的测试结果
例如:
class ParseTest : public ::testing::TestWithParam<const String> {};
TEST_P(ParseTest, UnknownType)
{
Transaction transaction;
String transaction_type = GetParam();
EXPECT_THROW(transaction.parse(transaction_type), ParseError);
}
INSTANTIATE_TEST_CASE_P(UnknownTypeInstance,
ParseTest,
::testing::Values(String("X 1024\n"), String("AB 1024\n")));
classparsetest:public::testing::TestWithParam{};
测试(解析测试,未知类型)
{
交易;
字符串事务类型=GetParam();
EXPECT_THROW(transaction.parse(transaction_类型),ParseError);
}
实例化测试案例(未知实例,
ParseTest,
::测试::值(字符串(“x1024\n”)、字符串(“ab1024\n”);
class ParseTest : public ::testing::TestWithParam<const String> {};
TEST_P(ParseTest, UnknownType)
{
Transaction transaction;
String transaction_type = GetParam();
EXPECT_THROW(transaction.parse(transaction_type), ParseError);
}
INSTANTIATE_TEST_CASE_P(UnknownTypeInstance,
ParseTest,
::testing::Values(String("X 1024\n"), String("AB 1024\n")));