22

私は単純な概念実証 Fakes nUnit テストを使用しています。

  [Test]
  public void TestFakes()
  {
      using (var ctx = ShimsContext.Create())
      {
          System.Fakes.ShimDateTime.NowGet = () => { return new DateTime(2000, 1, 1); };

          Assert.That(DateTime.Now.Year, Is.EqualTo(2000));
      }
  }

このテストは Visual Studio テスト エクスプローラーで実行されますが、次の環境では実行されません。

  • nUnit GUI
  • nUnit コンソール
  • JetBrains テスト ランナー (dotCover または Resharper)
  • TestDriven.net テスト ランナー

これらのそれぞれで、次のエラーが表示されます。

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException : COR_PROFILER_PATH および COR_PROFILER 環境変数からプロファイラー パスを解決できませんでした

そのアセンブリを振り返ると、VS Ultimate のみの機能である Intellitrace を探しているようです。Premium のみがインストールされています。

これを回避する方法についての提案 (ビルド サーバーで nUnit ランナーを使用しているため、これは Fakes の使用を妨げます)

4

3 に答える 3

15

MS Test フレームワーク以外を使用して、MS Fakes ベースのテストを実行できるとは思いません。

私は、MS Fakes の動作方法が NUnit などのテスト ランナーに問題を引き起こすと考えています。TypeMock などの他のモッキング フレームワークは NUnit などで正常に動作するため、正確な理由はわかりません。 MS テスト。とにかくそれが私の理論です。

NUnit、xUnit などの作成者が MS Fakes のサポートを追加しない限り (または狡猾な回避策がない限り)、MS Test に固執する必要があると思います。

編集:

NCrunch v2.5の最新バージョンはMS Fakes で動作するようです。開発中にベータ版を試してみましたが、NCrunch を使用して MS Fake テストが確実に実行されていることを確認できます。

于 2013-10-15T15:37:58.980 に答える
5

Fakes は Visual Studio Test Runner (別名 VStest.Console.exe) でのみ機能します。以前の Microsoft MSTest ランナーでさえサポートしていません

于 2016-04-13T00:10:24.173 に答える
1

あなたの答えは、次のコマンドのいずれかを使用することだと思います。

VSTest.Console.exe UnitTests.dll /UseVsixExtensions

VSTest.Console.exe UnitTests.dll /TestAdapterPath:%LocalAppData%\Microsoft\VisualStudio\12.0\Extensions\<nunit test adapter installation folder>

これらのコマンドは、開発マシンで正常に実行されます。ビルド サーバーで単体テストを実行する場合は、nunit テスト アダプター フォルダーをビルド サーバーにコピーし、そのパスを指定します。

于 2016-08-11T14:00:56.707 に答える