2012-09-04 46 views
2

我是PEX,Visual Studio和.NET世界的新手,neverthless我爲C#生成了一些測試。我已經讀過,PEX也可以分析用任何.NET語言編寫的.NET程序,所以目前我是 試圖讓PEX與C一起工作(我已經將代碼存儲在一個C++ 項目中。這是對的嗎?接近?)。由於C++沒有Visual Studio PEX加載項,我嘗試使用命令行界面。 在教程「使用Microsoft Pex進行參數化單元測試」中, 說,我應該有一個「.NET程序集」以.dll或.exe 結尾,其中包含一個用PexClassAttribute註解的類和用PexMethodAttribute註釋的public方法。由於本教程只提供了一個C#示例,因此我嘗試在沒有 任何註釋的情況下在.exe上運行PEX。所以我在Visual Studio中編譯我的代碼,得到我的 程序集light.exe並試圖在其上運行PEX。我得到了以下 錯誤:是否可以使用PE與C?

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對類進行註釋? 我需要哪些庫以及生產 組件的過程如何工作?
+0

您的標題引用C,但問題標記爲C++。你關心哪一種語言? (你真的在問C++。) –

+0

是的,其實我也應該標記C,因爲我對這兩種語言都很感興趣。 – user1646446

回答

3

Pex只適用於.NET程序集。它可以可以可以與任何.NET語言一起使用,但C不是一個 - 即使它只能在純C代碼上寫入目標CLR,而不是任何本機C代碼(您的是) 。

因此,它不會幫助您將C代碼作爲C++項目加載,因爲即使C++代碼不能被Pex分析,除非它的目標是CLR。

+0

謝謝你的回答。這可能是我不知道Visual Studio應該如何工作,但是:如何將我的C++代碼定位到CLR? – user1646446

+0

@ user1646446它不像打開開關那麼簡單(儘管在項目選項中也涉及到這一點)。您需要編程一個不同的C++方言,稱爲[C++/CLI](http://en.wikipedia.org/wiki/C%2B%2B/CLI)。 –