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

How to unit test main() in VisualStudio

在 C++ 中 Visual Studio 2019 中是否有简单的单元测试 main() 的方法?

我已经尝试 #including a main.h 并从测试中调用 main(),但是它 'looks' 就像测试的 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 需要基本了解存在可以调用(和测试)的函数。

我反对这种策略。

新程序员不会从测试开始。在考虑测试之前,至少需要向他们介绍功能。

虽然在技术上可以测试 main,但我会停下来思考它发送的是什么信息。如果这有可能养成坏习惯,那么一开始就不值得这样做。

明确一点,我并不是建议学生离开 2 年,直到他们成为专家,然后才考虑测试。不,我只是建议他们在被引入测试之前至少应该了解基础知识并熟悉功能。

一个重要的步骤,当然是到达可以编写可测试代码的地步,如果没有实际尝试测试代码,你就不会到达那个阶段,然后你会看到问题出在哪里,所以从这个观点,测试应该在开发过程的早期引入