gpt4 book ai didi

unit-testing - 在 googletest 框架中的 for 循环内运行 EXPECT_THROW

转载 作者:行者123 更新时间:2023-12-02 21:07:23 25 4
gpt4 key购买 nike

我正在尝试创建运行测试所需的字符串数组。我就是这样做的。

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

但是当我在谷歌测试框架中运行它时,我收到以下错误:

[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from ParseTest
[ RUN ] ParseTest.UnknownRequestType
tests/transaction.cpp:20: Failure
Expected: transaction.parse(transaction_type) throws an exception of type ParseError.
Actual: it throws nothing.
[ FAILED ] ParseTest.UnknownRequestType (0 ms)
[----------] 1 test from ParseTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 0 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] ParseTest.UnknownRequestType

1 FAILED TEST

当这实际上应该运行两个测试用例时,它只提示一个。我错过了什么吗?

最佳答案

这里有一些说明:

您实际上正在运行一个测试用例,请参阅以下定义:

TEST(TestCase, TestName) 

因此,在测试结果中,当它显示“1 个测试用例运行了 1 个测试”时,“测试”指的是您的 TestName 字段(在您的情况下为 UnknownType),而测试用例显然指的是“测试用例”(ParseTest)。您在特定测试中设置多少“断言”或“期望”并不重要。最终将作为一项测试报告。

所以如果你有

TEST(TestCase1, Test1){
.....
}
TEST(TestCase1, Test2){
....
}

它将报告为:运行了 1 个测试用例的 2 个测试

因此,假设“X 1024”是导致异常的原因,我怀疑“AB 1024”(无异常)的结果是最终报告的结果。

关于unit-testing - 在 googletest 框架中的 for 循环内运行 EXPECT_THROW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35370221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com