C# 如何将调试器附加到命令行mstest
我有一个使用mstest的单元测试套件,我可以在VisualStudio中从e中很好地运行它,但是当我的部署脚本尝试使用命令行调用mstest来运行测试时,它将在测试期间冻结一半的时间。这可能是测试中的一个问题,但由于无法在调试器中重现该问题,我无法找到该问题C# 如何将调试器附加到命令行mstest,c#,debugging,mstest,visual-studio-debugging,C#,Debugging,Mstest,Visual Studio Debugging,我有一个使用mstest的单元测试套件,我可以在VisualStudio中从e中很好地运行它,但是当我的部署脚本尝试使用命令行调用mstest来运行测试时,它将在测试期间冻结一半的时间。这可能是测试中的一个问题,但由于无法在调试器中重现该问题,我无法找到该问题 到目前为止,我无法附加mstest进程来调试问题,因为当我附加并暂停时,我在visual studio中什么也看不到(没有列出线程,没有已知代码)。它使用appdomains的方式是否有一些奇怪之处,从而无法轻松地连接到它?还有什么好方法
到目前为止,我无法附加mstest进程来调试问题,因为当我附加并暂停时,我在visual studio中什么也看不到(没有列出线程,没有已知代码)。它使用appdomains的方式是否有一些奇怪之处,从而无法轻松地连接到它?还有什么好方法可以尝试和排除故障,甚至可以从测试内部执行与控制台WriteLine等效的操作,以便mstest将其显示在控制台窗口中运行吗?查看process Explorer中的进程树后,
mstest.exe
启动了一个名为QTAgent32_40.exe
的子进程,我能够附加到该进程并关闭代码,以便调试测试
事实证明,它实际上是在我使用MethodImplOptions.Synchronized
两个选项创建的模拟对象中死锁的
[TestMethod]
public void DebugAttachToProcessTimeout()
{
Console.ReadLine();
}
确保在附加时选择正确的调试器类型-尝试显式指定,而不是自动检测.Hmm,奇数。您可以执行
跟踪.WriteLine
,它将出现在生成的.trx中,但我不确定它是否会在最后写入报告……即使您已经找到了答案,我还是建议将Rob下面的答案涂上“答案”,因为他说明了如何从VS内部进行调试,以及如何克服子流程启动。我也有类似的问题,他的回答提供了答案。