gpt4 book ai didi

c++ - 如何在 MVVM Windows 应用商店应用程序中为私有(private) C++ 模型层编写 Visual Studio 单元测试?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:17 27 4
gpt4 key购买 nike

我正在编写一个相当复杂的 Windows 应用商店应用程序。为了保持代码的可维护性,我想充分利用单元测试。到目前为止,我的解决方案包括以下内容:

  1. 应用本身和 View 层的 C#/XAML 项目
  2. 一个 C++ Windows 应用商店项目,其中 ViewModel 层由托管的 WinRT 引用类组成,而模型层是直接的 C++,并且完全隐藏在 View 层之外。
  3. 用于测试 ViewModel 层的 C# Windows 应用商店单元测试项目。
  4. 一个 C++ 项目,用于执行一些 DirectX 渲染( View 层的一部分,与本文无关)

使用 C# 项目测试 C++ WinRT ViewModel 类工作正常。使用不同的语言并不重要,因为一切都是公开的并且使用 WinRT 界面。

但是,为了测试模型层类,我不确定该怎么做。我希望我的测试用例在一个单独的项目中,但我不确定这是否可能。出于可移植性的原因,我想在这里保留所有标准 C++。此外,我试图隐藏所有内容,以便我可以遵守严格的 MVVM 设计。

我应该如何为我的标准 C++ 模型层编写 Visual Studio 单元测试(例如我的 ViewModel“单元测试库(Windows 应用商店应用程序)”中的单元测试)?


我现在正在考虑的一个选项是创建一个“ native 单元测试项目”,并将我的模型层项目的文件夹用作该项目的包含目录。好像我快到了,但我收到“错误 LNK2019:未解析的外部符号”。如何为包含在测试项目中的对象构建 CPP 文件。

最佳答案

您应该创建一个原生 C++ 测试项目来测试您的业务代码。但是有几个项目设置需要更改:

  1. 为您的业务代码设置包含路径,尤其是。头文件。
  2. 在测试项目中包含所有源代码文件。否则您将收到链接器提示未解析的符号错误,因为包含 头文件,但不包含实现 (*.cpp)。<
  3. 链接/忽略您的业务代码需要的所有库。 (与您的生产项目相同)不要忘记设置正确的链接路径。

这样做会增加编译时间(同一代码编译两次)和二进制文件大小(所有业务代码都必须在测试二进制文件中编译/链接)。

但据我所知,如果你的项目不是动态/静态库,而是可执行文件或其他一些格式不能导出符号,这是唯一的方法。

关于c++ - 如何在 MVVM Windows 应用商店应用程序中为私有(private) C++ 模型层编写 Visual Studio 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20794070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com