私はMacで、.NET Core 1.0とVisual Studio Codeを実行しています。
コンソールプロジェクトとテストプロジェクトがあります。コンソールプロジェクトをデバッグできるように、launch.jsonをセットアップしています。
単体テストを起動してデバッガーを接続する起動構成を設定するにはどうすればよいですか?
タイラーロングの答え を参照してください。 Visual Studio Codeの最新バージョンでは、以下の手順は不要です。
リポジトリ を作成しました。
まず、デバッガにテストをヒットさせる唯一の方法は、ファイルProgram.csを追加し、xUnitからエントリポイントを制御し、テストにコードを手動で追加することでした。これは理想的ではありませんが、これを頻繁に行うことはないでしょうし、通常に戻すのは簡単です。
using System;
namespace XUnitDebugging
{
public class Program
{
public static void Main(string[] args)
{
var test = new TestClass();
test.PassingTest();
Console.WriteLine("Enter text...");
Console.ReadLine();
}
}
}
次に、project.jsonで次を追加します。
"buildOptions": {
"emitEntryPoint": true,
"debugType": "portable"
},
{
"version": "1.0.0-*",
"testRunner": "xunit",
"buildOptions": {
"emitEntryPoint": true,
"debugType": "portable"
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"xunit": "2.2.0-beta2-build3300",
"dotnet-test-xunit": "2.2.0-preview2-build1029"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
}
}
}
}
これにより、xUnit単体テストプロジェクトをデバッグできます。
次のcomplicated起動構成を使用して、xUnitプロジェクト全体でデバッガーを実行できました。 「デバッグテスト」リンク(上記の@Tyler Long応答)がC#(Omnisharp) VS Code extension を介して行われている呼び出しを調べて、これを把握しました。注意事項:1)ドットネットプログラムへのabsoluteパスを提供する必要があります2)absoluteを提供する必要がありますパス(つまり、~/
または $HOME/
).nuget/packagesフォルダーへ3)以下の例では、テストプロジェクトの名前空間の名前はTests
です。この起動構成を設定したら、ブレークポイントを配置し、この構成を使用してデバッガーを起動すると、すべてのブレークポイントにヒットするはずです。
{
"name": "Debug xunit tests",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "/usr/local/share/dotnet/dotnet",
"args": [
"exec",
"--runtimeconfig",
"${workspaceRoot}/AppNameHere/bin/Debug/netcoreapp1.0/AppNameHere.runtimeconfig.json",
"--depsfile",
"${workspaceRoot}/AppNameHere/bin/Debug/netcoreapp1.0/AppNameHere.deps.json",
"--additionalprobingpath",
"/Users/jdoe/.nuget/packages",
"/Users/jdoe/.nuget/packages/dotnet-test-xunit/1.0.0-rc2-build10015/lib/netcoreapp1.0/dotnet-test-xunit.dll",
"${workspaceRoot}/AppNameHere/bin/Debug/netcoreapp1.0/AppNameHere.dll",
"-namespace",
"Tests"
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false
}
タイラーの答え _debug test
_コードレンズアイコンをクリックすることは、単一のテストをデバッグする最も簡単な方法です。
すべての単体テストをテストする方法は、テスト内にwhile(!Debugger.IsAttached) Thread.Sleep(500);
を追加することです。これにより、デバッガーをアタッチするまでテストが待機します。
_using System;
using System.Diagnostics;
using System.Threading;
using NUnit.Framework;
namespace SomeNamespace
{
[TestFixture]
public class SomeClassTests
{
[Test]
public void ShouldDoTest()
{
while(!Debugger.IsAttached) Thread.Sleep(500);
Assert.That(true, Is.True);
}
[Test]
public void ShouldDoTest2()
{
while(!Debugger.IsAttached) Thread.Sleep(500);
Assert.That(true, Is.True);
}
}
}
_
これにより、Visual Studio Codeデバッガーを実行中のtesthost.dllにアタッチできます。単純に_.NET Core Attach
_を選択し、次に_dotnet testhost.dll
_を選択します。