C++ 如何为私有C++;MVVM Windows应用商店应用中的模型层?

C++ 如何为私有C++;MVVM Windows应用商店应用中的模型层?,c++,unit-testing,mvvm,windows-store-apps,visual-studio-2013,C++,Unit Testing,Mvvm,Windows Store Apps,Visual Studio 2013,我正在编写一个相当复杂的Windows应用商店应用程序。为了保持代码的可维护性,我想充分利用单元测试。到目前为止,我的解决方案包括以下内容: 应用程序本身和视图层的C#/XAML项目 一个C++窗口存储项目,其中View模型层由托管WINRTF类组成,而模型层是直的C++,完全隐藏在视图层之外。 用于测试ViewModel层的C#Windows应用商店单元测试项目 一个C++项目,用于做一些DirectX渲染(视图层的一部分,而不是真正与此相关的) 用C++项目测试C++类WinRT ViewM

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

  • 应用程序本身和视图层的C#/XAML项目
  • 一个C++窗口存储项目,其中View模型层由托管WINRTF类组成,而模型层是直的C++,完全隐藏在视图层之外。
  • 用于测试ViewModel层的C#Windows应用商店单元测试项目
  • 一个C++项目,用于做一些DirectX渲染(视图层的一部分,而不是真正与此相关的)
  • 用C++项目测试C++类WinRT ViewModel的工作很好。使用不同的语言并不重要,因为所有内容都是公共的,并且使用WinRT接口

    但是,对于测试模型层类,我不确定该做什么。我希望我的测试用例在一个单独的项目中,但我不确定这是否可能。我希望把所有的东西都放在C++标准上,便于移植。此外,我试图隐藏一切,以便我能够坚持严格的MVVM设计

    <>我应该如何编写VisualStudio单元测试(比如我的VIEWModel中的那些单元测试库(Windows Store Apps)”,用于我的标准C++模型层?



    我现在看到的一个选项是创建一个“本机单元测试项目”,并将模型层项目的文件夹用作包含目录。看起来我快到了,但我得到了“错误LNK2019:未解析的外部符号”。如何为包含测试项目的对象构建CPP文件。< /P> < P>您应该创建一个本地C++测试项目来测试您的业务代码。但有几个项目设置需要更改:

  • 设置业务代码的包含路径,特别是头文件
  • 包括测试项目中的所有源代码文件。否则,您将收到链接器投诉
    未解决的符号错误
    ,因为只包括头文件,而不包括实现(*.cpp)
  • 链接/忽略业务代码所需的所有LIB。(与生产项目相同)不要忘记设置正确的链接路径
  • 这样做将增加编译时间(相同的代码编译两次)以及二进制大小(所有业务代码都必须在测试二进制文件中编译/链接)

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