使用VS11 RC。我有用C++编写的客户端可执行文件,我试图用C#单元测试库(Metro Style apps)项目进行测试。测试失败,出现异常未注册的类HRESULT 0x80040154(REGDB_E_CLASSNOTRG);我相信这与测试项目中的警告有关:可执行文件'Client.exe'被指定为winmd文件'C:.Client.winmd'的实现。只有进程内服务器支持在应用程序清单中生成注册信息。您需要在应用清单中指定进程外服务器注册信息。如何对Metro可执行文件中定义的类进行单元测试
在我看来,MSTest正在寻找类作为COM对象,并警告告诉我,我需要指定它作为一个进程外的服务器。不幸的是,我不认为我想这样做,因为它是一个可执行文件,即使这是我想要的,我也无法弄清楚如何去做。
我可以简单地将被测试的课程移动到不同的项目中,但是我不想这样做,没有理由比“我无法实现这个目标”更好。
有什么办法可以单元测试在Metro可执行文件中定义的类吗?
我想你需要将你的代码移动到一个DLL中。类型只能从DLL激活。有一些技巧可以将EXE转换为DLL,以便可以激活它的类型,但是我不知道单元测试框架/驱动程序是这样做还是可以做到的。 –
听起来像是对我的回答。你不会有一个偶然的描述类型激活的东西。我正试图掌握一些底层基础设施。 – basilard99
我正在度假,但我会在下周尝试追查好文件。目前关于MSDN的文档很少,所以大多数最好的信息都可以在博客文章和频道9视频中找到(唉)。 –