这个问题与我的单元测试程序崩溃但我不知道哪个单元测试的问题有关。
我意识到这个问题与How can I find out which test method in a batch of test methods fails to run?重复,但无论如何我都需要尝试:
我正在运行一些单元测试(大约118个),但其中一个似乎使Visual Studio单元测试环境崩溃。这就是我在“输出”窗口的“测试”选项卡中看到的内容:
[5/02/2018 11:13:18 Informational] ------ Run test started ------
[5/02/2018 11:13:38 Error] The active Test Run was aborted because the execution process exited unexpectedly. The test execution process crashed while running the tests. To investigate further, open file:///C:/Users/DominiqueDS/AppData/Local/CrashDumps/vstest.executionengine.x86.exe.19136.dmp file in Visual Studio and choose "Debug in mixed mode".
[5/02/2018 11:13:38 Informational] ========== Run test finished: 65 run (0:00:19,6926824) ==========
我拥有该转储文件的原因是由于我的Windows配置会在崩溃的应用程序中自动创建这样的转储文件。 (此配置的过程位于this URL)
下检查转储文件给了我关于测试的更多信息,这是失败的:我有预感,我可以找到它,在另一个线程中,我找到一个函数,调用method
似乎包含我正在运行的单元测试的名称。
虽然我知道哪个测试失败,但它基于预感和转储文件,我甚至不会生成,所以我正在寻找另一个解决方案:
在文件“c:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ VC \ Auxiliary \ VS \ UnitTest \ include \ CppUnitTest.h”中的函数TEST_METHOD
中,我是试图添加以下行:
cout << "Test : ";\
cout << methodName;\
cout << "\n";\
我希望这会显示我想要运行的每个测试,但我得到的错误信息是错误的(同样使用std::cout
并且OutputDebugString()
函数似乎不被允许)。
因此我的问题是:有没有人知道一种方法可以找到,如果我的一个单元测试使我的测试环境崩溃,我怎样才能找出它是哪个测试,而不需要生成和调试Visual Studio转储文件?
为了您的信息:查看“测试资源管理器”没有帮助:我有一个禁用测试列表,一个成功列表,以及一些未完成测试的列表,我的失败测试不是第一个“未完成”的。
答案 0 :(得分:0)
找到它:我在TEST_METHOD()
的定义中添加了以下行:
Microsoft::VisualStudio::CppUnitTestFramework::Logger::WriteMessage(L#methodName);\