web-dev-qa-db-ja.com

Visual Studio 2010でNunitテストをデバッグする方法

VisualStudioからのNUnitテストのデバッグに問題があります。空のプロジェクト(コンソールアプリケーション)を作成し、NUnitライブラリへの参照を追加して、簡単なテストを作成しました。

namespace ReimplementingLinq.Tests
{
    [TestFixture]
    public class WhereTest
    {
        [Test]
        public void SimpleFiltering()
        {
            int[] source = { 1, 2, 3, 4, 2, 8, 1 };
            var result = source.Where(val => val < 4);
            int[] expected = {1,2,3,4};
            CollectionAssert.AreEqual(expected, result);
        }
    }
}

次に、私はこのリンクで提供されたアドバイスに従いました Visual StudioからデバッグモードでNUnitを実行するにはどうすればよいですか が、そのトピックのソリューションがどれも私にとっては機能しません。テストの実行中に、ブレークポイントにヒットすることはありません。プロセスにアタッチして、引数付きの外部プログラムでプロジェクトを実行して、ソリューションをテストしてみました。

単体テストをデバッグするにはどうすればよいですか?

20
commando

Express Edition以外のバージョンのVisual Studioを使用していると仮定すると、 TestDriven.NET が役立つ場合があります。

インストール後

  1. テストメソッド内にブレークポイントを設定する
  2. 右クリックして、「テスト方法」メニューから「デバッガ」を選択します
  3. デバッガーが起動してブレークポイントに到達するはずです

残念ながら、TestDriven.NETはVisual Studioのプラグインであり、Expressエディションはプラグインの使用をサポートしていないため、Visual StudioのExpressエディションではこのメソッドを使用できません。

コンソールアプリ内でテストを実行する

コンソールアプリケーションを介してデバッガーでテストを実行することもできます。

  1. 新しいコンソールアプリケーションを作成する
  2. 単体テストプロジェクトを参照する
  3. コンソールアプリケーションのMainメソッド内で、テストフィクスチャの新しいインスタンスを作成し、テストメソッドの1つを呼び出します。たとえば、MyTestsという名前のフィクスチャとTest1という名前のテストがある場合、次のように記述します。

    var myTests = new MyTests();
    myTests.Test1();
    
  4. MyTestsクラスのインスタンスを作成する行にブレークポイントを設定し、F5キーを押します

  5. デバッガーがブレークポイントに到達すると、F11を使用してTestFixtureのコンストラクターにステップインするか、テスト自体にステップオーバーできます。
13
Crippledsmurf

Visual StudioでNUnitテストを直接実行またはデバッグする

まぁ拡張機能はありません!

F5(デバッグを開始)またはCtrl-F5(デバッグなしで開始)NUnit GUIを自動的に開始し、その中ですべてのテストを実行します。ブレークポイントがヒットした場合は、テストコードをデバッグすることもできます。

A 画像付きのステップバイステップガイド は、それを行う方法を正確に示します。

怠惰はすべての発明の母です:-)

41
Robert Koritnik

NUnit 2.4を使用している場合は、次のコードを SetUpFixture クラスに配置できます。 (これは古いバージョンでも実行できますが、SetUpFixtureと同等のことを行うか、テスト自体にコピーする必要があります。)

_[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}
_

Debugger.Launch() が実行することにより、NUnit内で[実行]をクリックすると、次のダイアログが表示されます。

JIT Debugger Dialog

次に、プロジェクトを開いた状態で実行中のVisual Studioのインスタンス(スクリーンショットの2番目)を選択すると、デバッガーが接続され、ブレークポイントや例外がVisual Studioに表示されます。

5

CodePlexのNHarness をご覧ください。

これは非常にシンプルなリフレクションベースのテストランナーライブラリで、NUnit属性を認識し、Visual Studio Express内のプロジェクトから実行できるため、デバッグテストが可能です。

現在、テストクラスレベルの細分性を備えていますが、メソッドレベルの呼び出しは、おそらく間もなく追加される予定です。

0
johnc

NUnit 2.5.3でも同じ問題があり、最終的に別の解決策が見つかりました。これがあなたのために働くかどうか見てください:

NUnit GUIを開き、[ツール]メニューの[設定...]ダイアログに移動します。設定ツリーのテストローダーセクションのアセンブリ分離サブセクションを選択します。 NUnitプロセスでテストを実行するようにデフォルトプロセスモデルを設定します。

単一の独立したプロセスでテストを実行するように設定していたため、デバッガーはテスト中のdllをデバッグ用のシンボルにリンクできませんでした。デフォルトドメインの使用には、アセンブリごとに別のAppDomainを使用を使用しています。

0
James