是否可以将PEX与C一起使用?

时间:2012-09-04 19:49:29

标签: c++ c pex

我是PEX,Visual Studio和.NET世界的新手,我完全没有 为C#生成了一些测试。我读过,PEX也可以分析 用任何.NET语言编写的.NET程序,所以目前我 试图让PEX使用C(我已经将代码存储在C ++中) 项目。这是正确的方法吗?)。由于没有Visual Studio 用于C ++的PEX加载项,我尝试使用命令行界面。 在教程“使用Microsoft Pex进行参数化单元测试”中 说,我应该有一个以.dll或.exe结尾的“.NET程序集” 包含用PexClassAttribute和public注释的类 用PexMethodAttribute注释的方法。仅限教程 为C#提供了一个示例,我尝试在.exe上运行PEX而没有 任何注释。所以我在Visual Studio中编译了我的代码,得到了我的代码 汇编light.exe并尝试在其上运行PEX。我得到了以下内容 错误:

Microsoft Pex v0.94.51006.1 -- http://research.microsoft.com/pex --
v4.0.30319
Copyright (c) Microsoft Corporation 2007-2010. All rights reserved.

unexpected error: error while loading of 'light' (currently running
with 4 bytes/pointer).
     LAUNCHER FAILED
unexpected failure: error while loading assembly (-1006 - 0xfffffc12)

所以我有以下问题:

  1. 是否可以将PEX与C一起使用?或者我要将我的代码转换为 C#?
  2. 看起来我的light.exe不是“.NET程序集”。我如何能 从C代码生成“.NET程序集”?
  3. 我是否收到错误消息,因为我的程序集格式错误或 因为我没有注释代码? (第二个似乎不太可能是因为我 错误消息。我希望“没有探索” 应用所有过滤器后发现;你忘了[PexClass]或者 [PexMethod]属性?“)。
  4. 如果错误不是由于缺少注释或格式错误 组装,那么根本原因是什么?
  5. 如何使用C ++中的PexClassAttribute注释类? 我需要哪些库以及生成过程的过程如何 装配工作?

1 个答案:

答案 0 :(得分:3)

Pex仅适用于.NET程序集。 可以与任何.NET语言一起使用,但C不是一个 - 即使它只是那时它仍然只能用于编写目标CLR的纯C代码,而不是任何本机C代码(你的是)。

因此,将C代码作为C ++项目加载并没有帮助,因为即使Cx代码也不能被Pex分析,除非它以CLR为目标。