dri*_*iis 40 debugging .net-core visual-studio-code
我在Mac上运行.NET Core 1.0和Visual Studio Code.
我有一个控制台项目和一个测试项目.我已经设置了launch.json,以便我可以调试控制台项目.
如何设置启动单元测试并附加调试器的启动配置?
Tyl*_*ong 133
如果您安装了最新的软件和库,则调试非常简单:
从截图中可以看到,只需单击"debug test"并进行调试即可!
Nic*_*sta 13
请参阅Tyler Long的回答.最新版本的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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,在project.json中添加以下内容:
"buildOptions": {
"emitEntryPoint": true,
"debugType": "portable"
},
Run Code Online (Sandbox Code Playgroud)
{
"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"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将允许您调试xUnit单元测试项目.
Bra*_*olt 12
我能够使用以下复杂的启动配置在整个xUnit项目上运行调试器.我检查了调用"调试测试"链接(在上面的@Tyler Long响应中)正在通过C#(Omnisharp)VS Code扩展来解决这个问题.注意事项:1)您必须提供dotnet程序的绝对路径2)您必须在下面的示例中提供绝对路径(即您不能使用~/或$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
}
Run Code Online (Sandbox Code Playgroud)
小智 10
Tyler单击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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,这允许您将Visual Studio代码调试器附加到正在运行的testhost.dll.简单选择.NET Core Attach然后dotnet testhost.dll.

| 归档时间: |
|
| 查看次数: |
27947 次 |
| 最近记录: |