【问题标题】:Per-file executable target for unit tests用于单元测试的每个文件的可执行目标
【发布时间】:2019-10-20 05:38:57
【问题描述】:

我有一个相当大的 Visual Studio 解决方案文件,其中包含许多项目文件。这些项目中的每一个都包含 C 文件和头文件以及单元测试,并编译为可执行文件或库。此外,每个单元测试都会编译成自己的可执行文件。

├───Solution
│   ├───project1
|   |   |───some_code.c
|   |   |───more_code.c
│   │   └───unit_tests
|   |       |───test_some_code.c
|   |       |───test_more_code.c
│   │       └───results
|   ├───project2
|   |   |───even_more_code.c
│   │   └───unit_tests
|   |       |───test_even_more_code.c
│   │       └───results
⋱   ⋱

有没有办法为这些单元测试中的每一个配置相应的可执行文件?我可以看到整个项目的目标: 但我没有看到单个文件的相应选项:

Example Solution folder

目标:在查看任何测试源代码时单击“调试”可调试相应的单元测试可执行文件。

【问题讨论】:

  • 您好,您使用什么单元测试框架?我已经读了两遍,但不能真正理解你的意思。调试project1核心代码的同时要调试单元测试代码吗?
  • 感谢您的浏览。我正在使用 CUnit,问题的症结在于我的 CUnit 文件与它们所覆盖的代码位于相同的项目中(因此每个项目中都有多个 main()s。我不确定如何调试单元测试,因为项目在属性中列出了作为可调试可执行文件的非测试代码.每次我想切换我正在调试的可执行文件时,我都可以打开项目属性并在源代码和测试之间进行更改,但我希望有更方便的方法。
  • 嗨,这个问题有什么更新吗?能否通过github或one-drive分享一个简单的示例(删除核心代码后),以便我可以直接为您检查。
  • 感谢您的提醒,这让我忘记了。我必须非常小心泄漏源代码,但我创建了一个具有相同结构的新示例解决方案,sans 代码。我们可能只需要重新设计我们的解决方案和/或单元测试设置,所以如果示例解决方案没有帮助,我会接受您的回答,因为它可能会帮助未来的 SO 访问者。
  • 我检查了你的例子。抱歉,您的解决方案目前不支持在查看测试代码时调试相应单元测试可执行文件的目标,您可能需要为测试代码调试创建新配置。刚开始配置新配置可能需要一些时间,但之后的开发和调试会很方便。打开你的 .vcxproj 文件你会发现 CICompile 项目,你可以使用msbuild condition 来控制调试和构建行为。

标签: visual-studio visual-studio-2017 visual-studio-debugging


【解决方案1】:

好像是XY problem

也许我们可以提供更好的解决方案,这样我们就不需要像这样的方式来实现目标:Clicking 'Debug' while viewing any test source code debugs the corresponding unit test.

在 VS IDE 中,我们可以配置我们的新配置。所以你可以右键project=>Configuration Manager 或者这样去打开manager:

在活动解决方案配置中选择新的并设置如下设置,然后单击确定:

之后,对于解决方案中的每个项目,您都可以配置其相应的配置以进行单元测试的调试。

例如:

不要忘记在此页面中配置其他相关设置,例如 pdb 文件名。

当您尝试调试project1时,将其设置为启动项目,将配置设置为Debug和F5。尝试调试 project1-unit-test 时,将配置设置为 DebugForTest 和 F5。

希望这是你想要的:)

【讨论】:

    猜你喜欢
    • 2013-06-21
    • 2010-12-26
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    相关资源
    最近更新 更多