私は PEX、Visual Studio、および .NET の世界は初めてですが、C# 用にいくつかのテストを生成しました。PEX は任意の .NET 言語で記述された .NET プログラムも分析できることを読んだので、現在、PEX を C で動作させようとしています (コードを C++ プロジェクトに保存しました。これは正しいアプローチですか?) . C++ 用の Visual Studio PEX アドインがないため、コマンド ライン インターフェイスを使用してみました。チュートリアル「Microsoft Pex を使用したパラメーター化された単体テスト」では、PexClassAttribute で注釈が付けられたクラスと PexMethodAttribute で注釈が付けられたパブリック メソッドを含む .dll または .exe で終わる「.NET アセンブリ」が必要であると書かれています。チュートリアルでは C# の例しか提供していないため、注釈を付けずに .exe で PEX を実行してみました。そこで、Visual Studio でコードをコンパイルし、アセンブリ ライトを取得しました。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)
だから私は次の質問があります:
- CでPEXを使用することは可能ですか? または、コードを C# に変換する必要がありますか?
- 私の light.exe は「.NET アセンブリ」ではないようです。C コードから「.NET アセンブリ」を作成するにはどうすればよいですか?
- アセンブリの形式が間違っているため、またはコードに注釈を付けていないために、エラー メッセージが表示されますか? (2 番目は、エラー メッセージのため、私にはありそうにないようです。「すべてのフィルターを適用した後に探索が見つかりませんでした。[PexClass] または [PexMethod] 属性を忘れましたか?」のようなものを期待します)。
- エラーの原因が、注釈の欠落やアセンブリの形式の誤りではない場合、根本的な原因は何ですか?
- C++ で PexClassAttribute を使用してクラスに注釈を付けるにはどうすればよいですか? どのライブラリが必要で、アセンブリを作成するプロセスはどのように機能しますか?