web-dev-qa-db-ja.com

Visual StudioからデバッグモードでNUnitを実行するにはどうすればよいですか?

私は最近、私が取り組んでいるC#の一部のテストフレームワークを構築しています。コンポーネントをテストするために、ワークスペース内にNUnitをセットアップし、新しいプロジェクトを作成しました。 Nunit(v2.4)からユニットテストをロードすれば、すべて正常に動作しますが、デバッグモードで実行していくつかのブレークポイントを設定することが本当に役立つポイントに到達しました。

テストプロジェクトの「デバッグ」プロパティを変更することを提案するいくつかのガイドからの提案を試しました。

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /Assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll

そこでコンソールバージョンを使用していますが、GUIの呼び出しも試みました。デバッグを開始しようとすると、どちらも同じエラーを返します。

Cannot start test project 'TestDSP' because the project does not contain any tests.

これは通常、\ DSP.nunitをNunit GUIにロードし、そこでテストが行​​われるためですか?

私は問題がVSがそれ自身のテストフレームワークを実行したいということかもしれないと考え始めています、それがNUnitテストを見つけることができない理由ですか?

編集:テストフィクスチャについて尋ねる人にとって、TestDSPプロジェクトの私の.csファイルの1つはおおよそ次のように見えます:

namespace Some.TestNamespace
{
    // Testing framework includes
    using NUnit.Framework;

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}

...私はC#とNUnitテストフレームワークにかなり慣れていないので、いくつかの重要な情報を見逃したことは完全に可能です;-)

最終ソリューション:大きな問題は、私が使用したプロジェクトでした。プロジェクトの種類を選択するときにOther Languages -> Visual C# -> Test -> Test Projectを選択すると、Visual Studioは、私が知る限り、独自のテストフレームワークを使用しようとします。代わりにnormal C#クラスライブラリプロジェクトを選択すると、選択した回答の指示が機能します。

117
Jon Cage

/ Assemblyフラグなしで、Jonを試しているのと同じ手法を使用します。

Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe

Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"

TestDSP.dllにはすべてのTestFixtureが含まれていますか?

テストプロジェクトはソリューションのスタートアッププロジェクトではないため、テストプロジェクトを右クリックして[デバッグ]-> [新しいインスタンスを開始]を選択してテストを実行します。

45

NUnitテストをデバッグする必要がある場合は、NUnit GUIアプリケーションnunit-agent.exe「デバッグ|プロセスにアタッチ」を使用して、GUIからテストを実行します。私のテスト(またはテストしているコード)のブレークポイントがヒットします。私はあなたの質問を誤解していますか、それはあなたのために働きますか?

100
Matt Hamilton

次のような行を削除するだけです

<ProjectTypeGuids>
    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

プロジェクトファイルから。この行は基本的にVS.Netにそれがテストプロジェクトであること、つまり「テストプロジェクトを開始できない」ことを伝えます。参考までに、1番目のGuidは「テストです」と言い、2番目は「それはC#です」と言います。これらのガイドの詳細: http://www.mztools.com/Articles/2008/MZ2008017.aspx

21
user276648

@Justinが提供する回答に加えて、NUnit 2.6の詳細がいくつかあります。

NUnit 2.6を使用すると、エージェントではなくnunit.exeまたはnunit-console.exeにアタッチされます。 @Justinによって示された構成はわずかに異なります。以下は、nunit.exe.configの例です(nunit-console.exe.configと同じ)。

<startup useLegacyV2RuntimeActivationPolicy="true">
  <!-- Comment out the next line to force use of .NET 4.0 -->
  <supportedRuntime version="v2.0.50727" />  
  <supportedRuntime version="v4.0.30319" />
</startup>

.NET 4テストプロジェクトの場合、ブレークポイントを取得するには、コメントが示唆するようにv2.0行をコメント化または削除する必要があります。それができたら、.NET 4.0テストプロジェクトをデバッグできました。

18
dblood

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に表示されます。

17

Nunit 3.0.1(VS2013を使用しています)で、メインメニュー> [テスト]> [ウィンドウ]> [テストエクスプローラー]から開きます。次に、「テストエクスプローラー」でテストケースを右クリックすると、次のように表示されます。 enter image description here

お役に立てれば。

11
Quinn

インストール TestDriven.NET 、これはVisual Studioのプラグインです

そこからユニットテストアセンブリを右クリックし、[テストの実行]をクリックしてスイート全体を実行するか、TestFixtureクラスを右クリックしてそのクラスのテストのみを実行するか、テストメソッドを右クリックしてそのメソッドのみを実行します。

デバッグモードでテストにブレークポイントを設定する必要がある場合は、デバッガーでテストするオプションもあります。

6
Jon Limjap

NUnititを試す-NUnitテストケースをデバッグするためのオープンソースVisual Studioアドイン

ホームページ- http://nunitit.codeplex.com/

6
abhilash

ProjectTypeGuidsをプロジェクトファイルから削除します。

5
Steve

写真付き:

  1. NUnit guiを実行します( ここから2.6.2をダウンロード )、File -> Open Projectに移動します

enter image description here

  1. Binフォルダーからテスト.dllを選択します(C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll

  2. Visual Studio Debug -> Attach to processに移動します(プロセスへのアタッチウィンドウが開きます)

  3. リストから下にスクロールしてnunit-agent.exeを選択し、Attachをクリックします

enter image description here

  1. この時点で、テストのブレークポイントは(中空から)熟した赤に変わります。

  2. Nunit GuiRunをクリックすると、ブレークポイントがヒットするはずです...

これで時間を節約できることを願っています。

3

コンソールまたはGUIを機能させることはできても、ブレークポイントにヒットしていない場合は、アプリがNUnitとは異なる.NETランタイムを実行している可能性があります。 nunit-console.exe.config/nunit.exe.configにランタイムが指定されているかどうかを確認します(構成はnunit exeと同じディレクトリに存在します)。スタートアップノードを使用してランタイムを指定します。

<configuration>
    <startup>
       <supportedRuntime version="4.0" />
    </startup>
2
Justin Turner

プロジェクトパスにスペースが含まれている場合(例:パスの「新しいプロジェクト」<path>\bin\Debug\New Project\Quotes.Domain.Tests.dll [開始オプション]-> [コマンドライン引数]プロジェクトパスを二重引用符で囲みます。

これを理解するのに多くの時間を費やしました。

2
Gyan Sada

パトリック・マクドナルド が言ったことについて

テストプロジェクトはソリューションのスタートアッププロジェクトではないため、テストプロジェクトを右クリックして[デバッグ]-> [新しいインスタンスを開始]を選択してテストを実行します。

テストクラスライブラリに適用しようとしましたが、パスに関するエラーが発生したため、「コマンドライン引数」を削除しようとしました。

1

私にとっての解決策は、nunit構成ファイルを適合させることでした。 4.5-.Netフレームワークおよびx64ビルドオプションでnunitを使用するには、スタートアップタグに1行追加する必要がありました(サポートされているランタイムバージョン)。

<startup useLegacyV2RuntimeActivationPolicy="true">
        <!-- Comment out the next line to force use of .NET 4.0 -->
        <supportedRuntime version="v4.0.30319" />
</startup>

その後、Testproject Debug-> Start new instanceを右クリックして開始できます。以前は、プロジェクトをプロセスに手動で再度アタッチする必要がありました。

私のデバッグプロパティは、C:\ Program Files(x86)\ NUnit 2.6.4\bin\nunit.exeで、テスト対象の.dllの場所の引数があります。

詳細: 。NET 4.0でのテスト用のnunit

0
Hauke Becker

テストフレームワークハンドルでのビルドのように、Visual Studio内からテストを実行できるようにする拡張機能「Visual NUnit」もあります。拡張機能マネージャーで確認してください。

0
iamkrillin

MSTestでも同じエラーが発生しました。 テスト出力ウィンドウで、テストの一部に重複したIDがあり、ロードできなかったことがわかりました。すべての重複したテストを削除し、プロジェクトを開始するときにテストを実行できるようになりました。

0
Vijay

Visual Studioを開きます--->プロジェクト--->「プロパティ」を選択します:\ Program Files\NUnit 2.6.2\bin\nunit.exe)---->保存

これを設定したら、[デバッグ]をクリックします。

0
Farija Khan

間違ったライブラリを使用しようとしているようです。 NUnitは、使用しているdllにTestFixturesが含まれている場合にのみ起動できます。

TestDriven.Netで+1。何度も使用する機会がありました。 http://testdriven.net/purchase_licenses.aspx のライセンスに従って、評価目的で個人用バージョンをダウンロードできます。

0
Mike737