Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 在Google测试框架中的for循环中运行EXPECT\u THROW_Unit Testing_Googletest - Fatal编程技术网

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")));