私は最近、私が取り組んでいる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#クラスライブラリプロジェクトを選択すると、選択した回答の指示が機能します。
/ 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が含まれていますか?
テストプロジェクトはソリューションのスタートアッププロジェクトではないため、テストプロジェクトを右クリックして[デバッグ]-> [新しいインスタンスを開始]を選択してテストを実行します。
NUnitテストをデバッグする必要がある場合は、NUnit GUIアプリケーションnunit-agent.exe
「デバッグ|プロセスにアタッチ」を使用して、GUIからテストを実行します。私のテスト(またはテストしているコード)のブレークポイントがヒットします。私はあなたの質問を誤解していますか、それはあなたのために働きますか?
次のような行を削除するだけです
<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
@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テストプロジェクトをデバッグできました。
NUnit 2.4以降を使用している場合、次のコードを SetUpFixture
クラスに配置できます。 (古いバージョンでこれを行うことができますが、SetUpFixture
と同等のものを実行するか、テスト自体にコピーする必要があります。)
_[SetUpFixture]
public class SetupFixtureClass
{
[SetUp]
public void StartTesting()
{
System.Diagnostics.Debugger.Launch();
}
}
_
Debugger.Launch()
が行うことは、NUnit内で実行をクリックすると、次のダイアログが表示されることです。
次に、プロジェクトを開いた状態でVisual Studioの実行中のインスタンス(スクリーンショットの2番目のインスタンス)を選択すると、デバッガーが接続され、ブレークポイントまたは例外がVisual Studioに表示されます。
インストール TestDriven.NET 、これはVisual Studioのプラグインです
そこからユニットテストアセンブリを右クリックし、[テストの実行]をクリックしてスイート全体を実行するか、TestFixtureクラスを右クリックしてそのクラスのテストのみを実行するか、テストメソッドを右クリックしてそのメソッドのみを実行します。
デバッグモードでテストにブレークポイントを設定する必要がある場合は、デバッガーでテストするオプションもあります。
NUnititを試す-NUnitテストケースをデバッグするためのオープンソースVisual Studioアドイン
ホームページ- http://nunitit.codeplex.com/
ProjectTypeGuidsをプロジェクトファイルから削除します。
写真付き:
File -> Open Project
に移動しますBinフォルダーからテスト.dll
を選択します(C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll
)
Visual Studio Debug -> Attach to process
に移動します(プロセスへのアタッチウィンドウが開きます)
リストから下にスクロールしてnunit-agent.exe
を選択し、Attach
をクリックします
この時点で、テストのブレークポイントは(中空から)熟した赤に変わります。
Nunit Gui
でRun
をクリックすると、ブレークポイントがヒットするはずです...
これで時間を節約できることを願っています。
コンソールまたはGUIを機能させることはできても、ブレークポイントにヒットしていない場合は、アプリがNUnitとは異なる.NETランタイムを実行している可能性があります。 nunit-console.exe.config/nunit.exe.configにランタイムが指定されているかどうかを確認します(構成はnunit exeと同じディレクトリに存在します)。スタートアップノードを使用してランタイムを指定します。
<configuration>
<startup>
<supportedRuntime version="4.0" />
</startup>
プロジェクトパスにスペースが含まれている場合(例:パスの「新しいプロジェクト」<path>\bin\Debug\New Project\Quotes.Domain.Tests.dll
[開始オプション]-> [コマンドライン引数]プロジェクトパスを二重引用符で囲みます。
これを理解するのに多くの時間を費やしました。
パトリック・マクドナルド が言ったことについて
テストプロジェクトはソリューションのスタートアッププロジェクトではないため、テストプロジェクトを右クリックして[デバッグ]-> [新しいインスタンスを開始]を選択してテストを実行します。
テストクラスライブラリに適用しようとしましたが、パスに関するエラーが発生したため、「コマンドライン引数」を削除しようとしました。
私にとっての解決策は、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の場所の引数があります。
テストフレームワークハンドルでのビルドのように、Visual Studio内からテストを実行できるようにする拡張機能「Visual NUnit」もあります。拡張機能マネージャーで確認してください。
MSTestでも同じエラーが発生しました。 テスト出力ウィンドウで、テストの一部に重複したIDがあり、ロードできなかったことがわかりました。すべての重複したテストを削除し、プロジェクトを開始するときにテストを実行できるようになりました。
Visual Studioを開きます--->プロジェクト--->「プロパティ」を選択します:\ Program Files\NUnit 2.6.2\bin\nunit.exe)---->保存
これを設定したら、[デバッグ]をクリックします。
間違ったライブラリを使用しようとしているようです。 NUnitは、使用しているdllにTestFixturesが含まれている場合にのみ起動できます。
TestDriven.Netで+1。何度も使用する機会がありました。 http://testdriven.net/purchase_licenses.aspx のライセンスに従って、評価目的で個人用バージョンをダウンロードできます。