4

私は LINQPad が大好きで、毎日使用しています。しばらくの間、LINQPad で nunit と TypeMock を使用してアドホック テストを作成して実行する方法を見つけようとしていました。

だから私はつまずいていくつかの結果を得ましたが、いくつかのリンクはまだありません.

これが私がやったことです:

  1. linqpad で新しいクエリを作成し、NUnit および Typemock アセンブリへの参照を追加します。

  2. Nunit ランナーを作成します。( http://www.paraesthesia.com/archive/2008/02/21/template-for-quick-typemock-testing.aspxに感謝します)

  3. Typemock プロファイラーを有効にするために、いくつかの環境変数を追加します。

この時点で、Nunit と Typemock を手動の手順で動作させることができます (nunit と typemock dll を実行中のディレクトリ (例: \AppData\Local\Temp\1\LINQPad\skbidgcw) にコピーする必要があります)。

しかし、(テストしたい) アセンブリを LINQPad スクリプトに追加すると、NUnit が実行中のディレクトリでアセンブリを見つけることができないため、テストは失敗します。すべてのDLLをそれにコピーしようとしましたが、これも次の理由で失敗します。

System.IO.FileNotFoundException : Could not load file or assembly 'LINQPad, Version=1.0.0.0, Culture=neutral, PublicKeyToken=21353812cd2a2db5' or one of its dependencies. The system cannot find the file specified.

私のlinqpadクエリはここにあります:http://pastebin.com/QtPNCv25

どんな助けでも本当に感謝します!

補足として、 NUnitLiteも使用してみましたが、Nunitテストは美しく実行されますが、Typemock で動作させる方法が見つかりません。「実行するには Typemock Isolator をカバレッジ ツールにリンクする必要があります」というエラーがスローされます。

4

1 に答える 1

2

最後に、NUnitLite を使用してやりたいことを行う方法を見つけました。

  • Typemock プロファイラーを有効にするために、次の環境変数をシステムに追加しました。

Cor_Enable_Profiling=0×1

COR_PROFILER={B146457E-9AED-4624-B1E5-968D274416EC}

(NUnitLite は別の AppDomain でテストを実行していた可能性があるため、LINQPad を介して環境変数を設定してもプロファイラーが有効になりませんでした。NUnitLite でこれを行うためのスイッチがあれば、これは回避される可能性がありますが、私は調査していません。)

  • TypeMock.dll と Typemock.ArrangeActAssert.dll を Linqpad のプラグイン フォルダーに配置します。

  • 新しいクエリを作成し、Nuget を介して NUnitLite を追加します。必要な名前空間を追加します。

これで、次のように動作するはずです。

void Main()
{
    new NUnitLite.Runner.TextUI().Execute( new[]{"-noheader"} );
}

// Define other methods and classes here
[Test, Isolated]
public void TestMock()
{
    Isolate.WhenCalled( () => DateTime.Now ).WillReturn( DateTime.Today );

    var dt = DateTime.Now;

    Assert.AreEqual( DateTime.Today, dt );
}

今、私の人生はかなり楽になるはずです。ありがとう!

于 2012-11-05T23:24:47.733 に答える