4

Gallio を使用して Visual Studio のテスト システムで MSpec テストを実行しようとしていますが、IDE から MSpec プラグインを無視しているようです。私がしたこと:

  1. ガリオ搭載
  2. MSpec NuGet パッケージをテスト プロジェクトに追加しました
  3. テスト プロジェクトに Gallio NuGet パッケージを追加しました
  4. MSpec Gallio の統合に必要な 3 つのファイルを、Gallio のインストール ディレクトリの「MSpec」フォルダにコピーしました。
  5. MSpec テストを書いた
  6. IDE で「ソリューション内のすべてのテスト」を実行

これにより、次のエラーが発生しました

「テストがロードされていないか、選択したテストが無効になっているため、テストは実行されませんでした」

Gallio 自体を確認するために、MbUnit への参照を追加し、簡単な MbUnit テストを作成しました。また、Gallio の他のツールを実行して、プラグインが取得されているかどうかを確認しました。適切な測定のためにVSを再起動しました。

結果

を使用してテストを実行するGallio.EchoGallio.Icarus、MbUnit と MSpec の両方のテストを正常に実行すると、プラグイン取得されます。Visual Studio からテストを実行すると、MbUnit テストは実行されますが、MSpec テストは実行されないため、Gallio 統合は機能しているように見えます (MSpec プラグインだけではありません)。何かご意見は?

誰かがそれについて言及する前に: はい、ReSharperを使用したいのですが、現時点ではライセンスは私の状況ではオプションではありません。

4

1 に答える 1

5

更新: MSpec を VS2012 のテスト システムに統合するプロジェクトになりました。これはVisual Studio ギャラリーで入手でき、ソースは GitHub にあります

両方のプロジェクトのソースで問題のデバッグを開始した後、MSpec と Gallio の VS ランナーの間の非互換性を引き起こしている 2 つの根本的な問題があるようです。ただし、両方の問題は、VS ランナーが Cecil を使用してアセンブリから型情報を読み込むという事実に起因します (おそらく、テスト アセンブリをメインの VS AppDomain に読み込まないようにするためです)。

さらに明らかになったら、この回答を更新します (うまくいけば、問題を修正するための 1 つまたは複数のパッチが作成されます)。

問題 1: ネストされた型が無視される

私は自分のテスト ( SubjectSpec+when_something) にネストされた型を使用していましたが、Gallio の VS ランナーがテスト アセンブリをアプリ ドメインに読み込まないようにするために使用される Cecil ベースのリフレクションでは無視されます。

これは最終的に比較的簡単な修正であり、Gallio 開発者にパッチとして提出しました。どのリリースに含まれるかの確認が取れたら、この回答を更新します。

問題 2: MSpec が原因で「テスト ドライバーの呼び出し中に例外が発生しました」

問題 1 を回避するためにコンテナー タイプが削除された場合、MSpec はこのエラーをスローします。これは、MSpec がテスト オブジェクトのインスタンスを作成しようとしているのに、Gallio が提供しているのは実際には作成できないラッパーオブジェクトだけだからです。 Type

于 2012-06-10T06:57:56.347 に答える