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();
}
}
}
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);
}
}
}
6条答案
按热度按时间0pizxfdo1#
如果您安装了最新的软件和库,调试起来会非常容易:
正如您从屏幕截图中看到的,只需点击“debug test”并调试它!
6xfqseft2#
请参阅Tyler Long's answer。最新版本的Visual Studio程式码不需要下列步骤:)
我制作了a repository来演示。
首先,我能让调试器命中测试的唯一方法是添加一个文件Program.cs,从xUnit控制入口点,然后手动添加代码进行测试。这并不理想,但我想您不会经常这样做,而且很容易将其恢复正常。
程序.cs:
接下来,在project.json中添加以下内容:
项目.json:
这将允许您调试xUnit单元测试项目。
gc0ot86w3#
我能够在整个xUnit项目上运行调试器,启动配置如下所示。我检查了“debug test”链接(在上面的@泰勒Long响应中)通过C#(Omnishart)VS代码扩展进行的调用,以了解这一点。注意事项:1)您必须提供dotnet程序的 * 绝对 * 路径2)您必须提供.nuget/packages文件夹的 * 绝对 * 路径(即您不能使用
~/
或$HOME/
)3)在下面的示例中,我的测试项目命名空间的名称是Tests
。一旦您有了这个启动配置,您就可以放置断点,使用此配置启动调试器,调试器应命中所有断点。6jygbczu4#
点击
debug test
代码透镜图标的Tyler's answer是调试单个测试的最简单方法。测试所有单元测试的一种方法是在测试中添加
while(!Debugger.IsAttached) Thread.Sleep(500);
。这将使测试等待,直到您附加调试器。然后,这允许您将Visual Studio代码调试器附加到正在运行的testost.dll。只需选择
.NET Core Attach
,然后选择dotnet testhost.dll
。cgfeq70w5#
**编辑:**快速修复(每个Cyrille Belfort):
1.按Ctrl+Shift+P组合键
1.搜索并选择 *OmniSharp:选择项目 *
1.选择测试项目
1.进入
**原始答案:**要让OmniSharp检测这两个项目而无需在它们之间切换,您可以创建一个解决方案。
1.创建解决方案:
1.添加项目:
1.重新加载VS代码:
1.按Ctrl+Shift+P组合键
1.搜索并选择 * 开发人员:重新加载窗口 *
1.进入
1.选择解决方案:
1.按Ctrl+Shift+P组合键
1.搜索并选择 *OmniSharp:选择项目 *
1.选择解决方案
1.进入
之前:
之后:
感谢@lp的评论。
2lpgd9686#
@埃里克·埃斯基尔森,帮我自己解决了
需要注意的是,我只使用了步骤4,并选择了我正在处理的csproj,而不是构建解决方案。
奇怪的是只有那些CodeLens测试链接似乎受到了影响。Omnisharp提示和/或Inlay提示在整个工作区都在工作。