c++ - 如何在 Visual Studio 中对 main() 进行单元测试

标签 c++ visual-studio unit-testing program-entry-point googletest

有没有一种简单的方法可以在 C++ 的 Visual Studio 2019 中对 main() 进行单元测试?

我试过 #including 一个 main.h 并从测试中调用 main(),但它“看起来”像测试的 main() 被调用,导致递归。

我想尽早向学生介绍测试(编写代码使测试绿色化),学生将(还)没有函数或类的经验。

仅供引用,我们使用的是 GoogleTest,但该选择可以更改。

最佳答案

main比较特殊,因为程序中只能有一个main。此外,main 不是您通常进行单元测试的内容。然而,解决方案相当简单

// the "main" function you can test
int my_main(int argc, char** argv) {
    // ...
}

// your main (the one you dont include for testing
int main(int argc, char** argv) {
    return my_main(argc,argv);
}

and the students will have no experience(yet) of functions or classes

我对这个策略有疑问。可组合性是单元测试的先决条件。如果您有可以单独测试的小单元,则单元测试很有意义。在能够对 main 进行单元测试之前,需要基本了解存在可以调用(和测试)的函数。

关于c++ - 如何在 Visual Studio 中对 main() 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57852541/

相关文章:

c++ - QtCreator/GDB 调试器 : not accessible, 或 `this` 对象未显示

visual-studio - 如何将我的 Visual Studio 2012 项目和我 friend 的项目连接到同一台电脑

angularjs - 对 AngularJS 指令的事件广播进行单元测试

unit-testing - 使用 eunit 编写 Erlang 单元测试的最佳实践/约定

c++ - C++ 何时引入了 'and' 和 'or' 替代标记?

c++ - 如果类至少包含一个虚函数,是否总是需要将析构函数声明为虚函数?

visual-studio - 分组部分类快捷方式

visual-studio-2010 - 更改下一个执行语句的快捷方式

python - 如何在运行时跳过整个 Python 'unittest' 模块?

c++ - wcscpy_s 不影响 wchar_t*