vs的gtest,在父目录执行测试用例,不会执行完所有的子目录的测试用例

在Visual Studio(VS)中使用Google Test(gtest)时,如果你尝试在父目录级别执行测试用例,但期望它能够自动发现并执行所有子目录中的测试用例,这通常不是gtest或VS的默认行为。gtest本身并不具备递归遍历目录以查找和执行测试用例的功能。

gtest的执行是基于单个可执行文件的,每个可执行文件通常包含了一组相关的测试用例。在VS中,你通常会为每个测试项目(可能对应于一个或多个源代码文件)创建一个可执行文件。如果你的测试用例分布在不同的子目录中,并且每个子目录都有其对应的测试项目,那么你需要为每个测试项目分别编译生成可执行文件,并分别运行它们来执行所有测试用例。

然而,有几种方法可以在一定程度上简化这个过程:

编写一个脚本:你可以编写一个批处理脚本(Windows)或shell脚本(Linux/macOS),该脚本遍历所有包含gtest可执行文件的子目录,并在每个子目录中执行相应的测试程序。这样,你就可以通过一个命令来运行所有测试。

使用CTest:CMake提供的CTest是一个跨平台的自动化测试系统,它可以与gtest集成。你可以使用CMake来配置你的项目,并生成一个CTest测试列表,该列表包含了所有gtest可执行文件。然后,你可以使用CTest命令来运行所有测试,而无需手动执行每个可执行文件。

在VS中设置多个测试项目:在VS的解决方案中,你可以设置多个测试项目,每个项目对应于一个子目录中的测试用例。然后,你可以使用VS的测试资源管理器来同时运行所有测试项目。虽然这需要在VS中进行一些手动设置,但它可以提供一个集成的测试环境。

使用VS的命令行工具:VS提供了命令行工具(如mstest、vstest.console.exe等),你可以编写一个批处理脚本来调用这些工具,并指定要运行的测试程序列表。这种方法与编写自定义脚本类似,但利用了VS的内置工具。

请注意,上述方法中的每一种都有其适用场景和限制。选择哪种方法取决于你的具体需求、项目结构和开发环境。如果你的项目非常大,包含许多子目录和测试用例,那么编写一个自动化脚本来管理测试可能会更加高效。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用GTest单元测试框架读取测试用例文件,并使用这100条测试用例对NextDate函数进行测试的示例代码: ```c++ #include <gtest/gtest.h> #include <fstream> #include <string> #include "NextDate.h" using namespace std; TEST(NextDateTest, TestFromFile) { ifstream infile("testcases.txt"); string line; while (getline(infile, line)) { int year, month, day; char expected[11]; sscanf(line.c_str(), "%d/%d/%d %s", &year, &month, &day, expected); string result = NextDate(year, month, day); EXPECT_STREQ(result.c_str(), expected) << "Input: " << year << "/" << month << "/" << day; } } int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } ``` 其中,`testcases.txt` 文件包含 100 条测试用例,每条测试用例都包含一个日期和一个期望的输出结果,格式如下: ``` 1985/2/28 1985/3/1 1985/9/30 1985/10/1 ... ``` `NextDate` 函数是待测试的函数,其返回值为一个字符串,表示给定日期的下一天。在测试函数中,我们使用 `sscanf` 函数从测试用例文件中读取每条测试用例的输入和期望输出,然后调用 `NextDate` 函数计算实际输出结果,并使用 `EXPECT_STREQ` 宏进行断言,判断实际输出结果是否等于期望输出结果。如果实际输出结果和期望输出结果不相等,则输出测试失败的信息,包括用例的输入和输出,方便我们进行调试。 最后,我们在 `main` 函数中调用 `testing::InitGoogleTest` 函数来初始化 GTest 单元测试框架,并调用 `RUN_ALL_TESTS` 函数运行所有的测试用例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值