【问题标题】:MSTest for huge legacy codebase用于庞大的遗留代码库的 MSTest
【发布时间】:2023-03-07 10:15:01
【问题描述】:

我们有一个庞大的代码库,其中包含大约 1000k 行本机/非托管遗留 c++ - 代码,我们将为代码提供单元测试,MSTest 将完全适合我们当前的开发环境(TFS、VS 2010、... )。我知道 MSTest 最初是为了测试托管代码,但它也可以为非托管 sc 编写单元测试。

将 MSTest 用于非托管代码是否有任何(以后)缺点?有人有这方面的经验吗?

第二种意见是使用 Google.Test,但我必须编写一个 Visual Studio 插件才能将 gtest 框架集成到我们的环境中。

提前致谢!

【问题讨论】:

  • 毕竟我们决定放弃 MSTest,现在我们使用 GoogleTest 作为单元测试框架。原因是在 /CLR:pure 下编译我们的代码库需要花费太多时间和精力

标签: c++ mstest legacy googletest


【解决方案1】:

我不建议将 MSTest 用于托管测试。请参阅here 了解我的经验。但是,如果您坚持,我会说测试遗留代码的一个非常好的方法是使用 PInvoke 与您的 c++ 代码互操作。

【讨论】:

  • 您对 Visual Studio 如何增强测试非托管代码的过程有任何经验吗?我曾经在博客中读到过,应该用新的 VS 版本来改进这一点
【解决方案2】:

无论如何我都会推荐googletest我认为他们也会很乐意接受您的 VS 集成并将其包含在下一个版本中,前提是补丁具有合理的质量。

哦,那么您可以使用另一个很棒的 Google 项目,gmock

【讨论】:

    【解决方案3】:

    我使用 Boost.Test 框架在 Visual Studio 中测试我的 C++ 代码,没有任何问题。您需要创建一个测试项目(控制台模式 EXE),其中包含您的主项目可以依赖的测试。使用 Visual Studio 的“构建后”步骤,您可以自动运行测试。

    【讨论】:

    • 感谢您的评论。测试自动化只是我们的“必备”之一,而且测试框架应该直接集成到 VS 中,例如用户应该能够选择他/她想要运行的测试,或者它应该提供有用的信息,如代码覆盖率等。
    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 2010-11-18
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多