12

私のプラットフォーム: Visual C# 2008 Express Edition with NUnit 2.2.7

あるプロジェクトに自分のコードを含むソリューションがあり、同じソリューション内の別のプロジェクトに NUnit 単体テストがあります。

私は、NUnit テストのデバッグとシングルステップに苦労しています。次の呼び出しを提案するオンラインの参考文献をいくつか見つけました。

NUnit.ConsoleRunner.Runner.Main(args);

しかし、これはコンパイルさえしません - コンパイラエラーがあります:

エラー 1 タイプまたは名前空間名 'Runner' が名前空間 'NUnit.ConsoleRunner' に存在しません (アセンブリ参照がありませんか?)

見つけたすべてのアセンブリ参照を追加しましたが、効果はありません。

最後に、これは私が一緒にハッキングしたもので、うまくいきますが、おそらくあなたの良い読者はより良い解決策を提案することができます:

1) 私のテスト プロジェクトでは、デバッグするテスト ケースのクラス名は MyTestClass です。Init() という名前の [TestFixtureSetUp] メソッドがあり、実際のテスト ケースは [Test] 関数 MyTest() にあります。

2) 私のコード プロジェクトには、EXE にコンパイルされるコンソール プログラム TestProgram.cs があります。

TestProgram.cs では、次の方法でテスト ケースを呼び出します。

// First instantiate the test class
MyTestClass tc = new MyTestClass();

// Call the TestFixtureSetup method
tc.Init();

// Now call the actual test
tc.MyTest();

これは機能し、テスト ケースをデバッグしてシングル ステップで実行できます。

追加のプラグインにお金を払わずにVisual Studio 2008 Express を使用するためのより良い提案があれば、アドバイスをいただければ幸いです。

4

6 に答える 6

3

ジョンは良い方法ですが、より自動的な方法ではありません;)

これが私がすでにSOで言っていることです:

空のプロジェクトを作成し (たとえば、コンソール アプリケーションを選択)、プロジェクトのプロパティで DEBUG タグを選択してStart External Program. Nunit のパスを入れます。それよりも、開始オプションでは、コマンドライン引数がすべてのテストを含む DLL を選択します (私のものは常に nunit\bin にあります...)。選択するEnable unmanaged code debuggingと、VS 内でプロジェクトを開始し、デバッガーを段階的に使用することもできます。

この方法では、毎回マクロや何かを実行する必要はありません。通常の F5 です :)

于 2008-11-08T13:18:26.837 に答える
2

http://nunit.com/blogs/?p=28をご覧ください

これは御馳走になります。

于 2009-02-08T21:17:44.177 に答える
2

Visual Studio の Express バージョンを使用しているため、無料の TestDriven.NET アドインを使用できません。残念なことに、それは私が単体テストのデバッグに使用した最高のツールだからです。

このRunnerクラスはnunit-console-runner.dllアセンブリにあるため、必ず参照を追加してください。単純なエントリ ポイントにはない機能があるかどうかはわかりませんが、安全性と将来の互換性のために、これを使用するのがおそらく最善です。

言及する価値のあるもう 1 つの (汚れた) オプションは、単体テストが呼び出すためのものDebugger.Attach()です。高速インストールでこれを試したことはありませんが、単体テストの実行時にデバッガーをアタッチするように求められるはずです。次に、既存の VS インスタンスを選択して、それを使用してデバッグできます。

于 2008-11-08T11:13:39.847 に答える
0

ReSharper がインストールされている場合、[Test] フィクスチャを検出し、実行する各メソッドの左側とすべてを実行する各テスト フィクスチャの左側にアイコンを配置できるはずです。私はこの方法を好みます。

職場のほとんどの人は TestDriven.NET も持っていますが、何らかの理由で私のマシンにはありません。ちょっと面白いです。

于 2009-02-08T21:22:04.697 に答える
0

私の店では、あなたとまったく同じようにやっています。欠点として、これはセットアップが NUnit のように正確ではない可能性があることを意味します。利点としては、非常に簡単に実行でき、バグを再現するための最小限の環境を作成できます。

于 2008-11-08T11:07:39.923 に答える
0

次の呼び出しを提案するオンラインの参照をいくつか見つけました: NUnit.ConsoleRunner.Runner.Main(args); しかし、これはコンパイルさえしません-コンパイラエラーがあります:

JFYI NUnit DLL バンドル (私は 2.2.4.0 を持っています)の nunit-console-runnerアセンブリへの .NET DLL 参照を追加する必要があります。クラスの名前も変更されているようですが、必要な場合はそこにあります。

NUnit.ConsoleRunner.ConsoleUi.Main(args);
于 2008-11-08T13:13:36.097 に答える