我有一个使用mstest的单元测试套件,我可以在visual studio中运行,但是当我的部署脚本尝试使用命令行调用mstest运行测试时,它会在测试的一半时间内冻结。这可能是测试中的问题,但是无法在调试器中重现问题,我一直无法找到问题。
到目前为止,我无法附加mstest进程以便能够调试问题,因为当我附加和暂停时,我在visual studio中看不到任何内容(没有列出线程,没有已知代码)。关于它如何使用appdomains以防止轻易附加到它,有什么奇怪的吗?尝试和排除故障的任何其他好方法是,甚至可以从测试内部执行等效的Console WriteLine,以便mstest将在运行的控制台窗口中显示它吗?
答案 0 :(得分:5)
两个选项。
或
使用/ noisolation开关运行mstest。它将直接执行测试,而不是产生辅助进程。
混合:自动将VS调试器连接到命令行mstest.exe:
我使用以下命令为我的测试项目配置Debug选项卡:
启动外部程序:C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ MSTest.exe
命令行参数:/ noisolation /testcontainer:MyProjectName.dll
答案 1 :(得分:3)
在Process Explorer中查看进程树后,MSTest.exe
启动了一个名为QTAgent32_40.exe
的子进程,我能够附加到该进程并关闭Just my code以便我可以调试我的测试
原来它在我创建的使用MethodImplOptions.Synchronized
答案 2 :(得分:0)
以下是我对vstest.console工具的建议:
在测试文件的底部添加新的测试方法,因此该测试将首先在 vstest.console 工具中执行:
[TestMethod]
public void DebugAttachToProcessTimeout()
{
Console.ReadLine();
}