【发布时间】:2017-06-06 13:15:33
【问题描述】:
考虑带有静态库项目和带有单元测试的控制台应用程序的 Visual Studio C++ 解决方案。应用程序构建后步骤是 "$(TargetDir)$(TargetFileName)" 以在每次成功编译时自动运行测试。
当编译成功但测试失败时,有时我想调试它们,所以我需要从 VS 运行它们。问题是如果测试失败,构建也会被认为失败,因此 VS 拒绝运行。
所以当你尝试运行失败的构建时,你会得到
(该选项默认为on,但迟早每个人都会点击“不再显示此对话框”)
这并不理想,因为它令人困惑,它会再次触发构建(编译成功时会跳过但会再次运行测试,并且该选项是全局的,这意味着它适用于您的所有项目,即使是那些不需要它的项目。它是当然不是什么大不了的事,只是想知道人们是否对此有一些聪明的技巧。
例如,C# 项目构建事件有一个选项“当构建更新项目输出时” - 非常适合在每次编译后进行单元测试。
项目是跨平台的,所以VS测试框架不适用。
【问题讨论】:
-
为什么VS测试框架不适用?您在这里要求一个不可避免的特定于平台的解决方案(假设您没有在其他平台上使用 MSBuild)。
-
@Sneftel:单元测试是跨平台的,我们使用谷歌测试。大多数开发都发生在 VS 中的 Windows 上(我认为这是非常流行的设置)。我对 VS 测试框架的了解有限,你知道它在这里有什么帮助吗?
-
如何让单元测试成为一个依赖于主项目的独立项目?如果构建失败,主项目仍将标记为已构建。
-
@VTT:已经是:
a static lib project and a console app with unit-tests -
我的意思是你创建了另一个依赖于这个控制台应用程序并实际运行测试的项目。
标签: c++ visual-studio unit-testing