【问题标题】:Is it possible to use PEX with C?是否可以将 PEX 与 C 一起使用?
【发布时间】:2012-09-04 19:49:29
【问题描述】:

我是 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 注释类? 我需要哪些库以及如何生成 组装工作?

【问题讨论】:

  • 你的标题指的是C,但问题被标记为C++。你关心哪种语言? (你真的在问 C++。)
  • 是的,实际上我也应该标记 C,因为我对这两种语言都感兴趣。

标签: c++ c pex


【解决方案1】:

Pex 仅适用于 .NET 程序集。它可以与任何 .NET 语言一起使用,但 C 不是一种语言——即使是这样,它仍然只能在针对 CLR 编写的纯 C 代码上工作,而不是在任何本机 C 代码上工作(你的就是)。

因此,将 C 代码作为 C++ 项目加载也无济于事,因为 Pex 无法分析 C++ 代码,除非它以 CLR 为目标。

【讨论】:

  • 感谢您的回答。这可能是我不知道 Visual Studio 应该如何工作,但是:如何将我的 C++ 代码定位到 CLR?
  • @user1646446 这并不像按下开关那么容易(尽管这也涉及到,在项目选项中)。您需要编写一种不同的 C++ 方言,称为 C++/CLI
猜你喜欢
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2021-11-12
  • 2016-04-01
  • 2011-01-20
  • 2018-08-11
  • 2021-08-05
  • 2019-03-18
相关资源
最近更新 更多