< TLDR>
从命令行运行MSTest测试会在没有任何错误或超时的情况下挂起,同时“等待运行/代理”。原因可能是“队列中没有运行”,但为什么会这样,我不知道,因为完全相同的测试在另一台机器上运行得很好。
< / TLDR>
我们最近从在测试机器上评估TeamCity,到在我们的生产环境中安装它。在迁移了我们所有的构建配置后,我们突然遇到了MSTest测试的问题:没有人会运行。
在调试了我们能想到的所有内容之后,我们认为我们已经排除了与TeamCity有关的任何事情。我们仍然认为这与MSTest直接相关。作为重现我们问题的简单方法,我在Visual Studio中创建了一个测试解决方案 MSTestTest (C#4.0)。
它有一个项目 MSTestTest ,只有一个类 Class1 :
namespace MSTestTest
{
public static class Class1
{
public static string Foo()
{
return "Bar";
}
}
}
它有另一个项目 MSTestTestTest ,只有一个MSTest测试类 UnitTest1 :
using MSTestTest;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace MSTestTestTest
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
Assert.AreEqual("Bar", Class1.Foo());
}
}
}
编译解决方案并将其两个DLL( MSTestTest.dll 和 MSTestTestTest.dll )复制到我们的旧测试服务器和新的生产服务器。在两台服务器上,我编辑了MSTest.exe.config文件,将详细的日志记录信息写入 C:\ Temp \ MSTestTrace.log (as described here)。
在测试服务器和生产服务器上,然后从命令行运行测试,如下所示:
mstest /testcontainer:MSTestTestTest.dll /resultsfile:results.trx
在测试服务器上,我立即获得了成功的测试结果:
C:\temp\MSTestTestTest>mstest /testcontainer:MSTestTestTest.dll /resultsfile:results.trx
Microsoft (R) Test Execution Command Line Tool Version 10.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Loading MSTestTestTest.dll...
Starting execution...
Results Top Level Tests
------- ---------------
Passed MSTestTestTest.UnitTest1.TestMethod1
1/1 test(s) Passed
Summary
-------
Test Run Completed.
Passed 1
---------
Total 1
Results file: C:\temp\MSTestTestTest\results.trx
Test Settings: Default Test Settings
然而,在生产服务器上,我得到的只是:
C:\Temp\MSTestTestTest>mstest /testcontainer:MSTestTestTest.dll /resultsfile:results.trx
Microsoft (R) Test Execution Command Line Tool Version 10.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Loading MSTestTestTest.dll...
Starting execution...
我已经让服务器运行了几个小时,但没有任何反应。没有超时,没有错误,没有任何错误。在这一点上,我完全被困在哪里继续。
以下是测试服务器上的跟踪日志的摘录(完整日志can be seen here(来自不同但相同的运行)):
15:02:39.525, TestAgentProcessReady: total # of execution agents=1.
15:02:39.525, ControllerExecution.TestAgentProcessReady: areAllAgentProcessesReady=True.
15:02:39.525, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper>(ControllerExecution.TestMessageReceiver)+ExternalJob.ProcessJob: successfully invoked job processor for job 'ReceivedTestMessageWrapper for test message 'Microsoft.VisualStudio.TestTools.Execution.TestAgentProcessStartedMessage' from agent 'TRUTVBYGG01''
15:02:39.634, ControllerObject: RunQueueThread waiting for runs/agents...
15:02:39.744, AgentProcessManager.StartTestAgentRun_DoWork: tests were queued to test agents.
15:02:39.744, ControllerExecution.SyncAllExecutionAgentsReady: finished waiting on m_agentProcessesInitialized: signaledIndex=0
15:02:39.744, StateMachine(RunState): SetNextState Started called
15:02:39.744, StateMachine(RunState): In state Started. Waiting for state change...
15:02:39.744, StateMachine(RunState): Exit wait for state change, current state is Started.
15:02:39.744, StateMachine(RunState): calling state handler for Started
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: invoking special job checker for job 'TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Started'
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: successfully invoked special job checker for job 'TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Started'
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: isSpecial = False
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Common.RunStateEvent: TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Started'
15:02:39.744, ControllerObject: RunStartedHandler called for run 9363144a-38a7-4ee1-a920-1e1a3584859b
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry>(ControllerObject.RunQueueMessageProcessor).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry: Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry'
15:02:39.744, StateMachine(RunState): SetNextState Running called
15:02:39.744, StateMachine(RunState): In state Running. Waiting for state change...
15:02:39.744, StateMachine(RunState): Exit wait for state change, current state is Running.
15:02:39.744, StateMachine(RunState): calling state handler for Running
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: invoking special job checker for job 'TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Running'
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: successfully invoked special job checker for job 'TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Running'
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: isSpecial = False
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Common.RunStateEvent: TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Running'
15:02:39.744, StateMachine(RunState): In state Running. Waiting for state change...
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender)+ExternalJob.ProcessJob: invoking job processor for job 'TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Started'
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: invoking special job checker for job 'Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: successfully invoked special job checker for job 'Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
15:02:39.744, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: isSpecial = False
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Common.TestMessageBulk: Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender)+ExternalJob.ProcessJob: successfully invoked job processor for job 'TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Started'
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry>(ControllerObject.RunQueueMessageProcessor)+ExternalJob.ProcessJob: invoking job processor for job 'Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry'
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry>(ControllerObject.RunQueueMessageProcessor)+ExternalJob.ProcessJob: successfully invoked job processor for job 'Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry'
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver)+ExternalJob.ProcessJob: invoking job processor for job 'Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
15:02:39.744, LocalRunMessageListener.OnProcessReceivedTestMessage: Handling message 'TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Started'
15:02:39.744, LocalRunMessageListener: RestartTimer
15:02:39.744, LocalRunMessageListener.OnProcessReceivedTestMessage: Handling message 'TRUTVBYGG01: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}: Running'
15:02:39.744, LocalRunMessageListener: RestartTimer
15:02:39.744, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver)+ExternalJob.ProcessJob: successfully invoked job processor for job 'Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
15:02:39.900, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper>(ControllerExecution.TestMessageReceiver).TryEnqueueJob: invoking special job checker for job 'ReceivedTestMessageWrapper for test message 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started' from agent 'TRUTVBYGG01''
15:02:39.900, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper>(ControllerExecution.TestMessageReceiver).TryEnqueueJob: successfully invoked special job checker for job 'ReceivedTestMessageWrapper for test message 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started' from agent 'TRUTVBYGG01''
15:02:39.900, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper>(ControllerExecution.TestMessageReceiver).TryEnqueueJob: isSpecial = False
15:02:39.900, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper>(ControllerExecution.TestMessageReceiver).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper: ReceivedTestMessageWrapper for test message 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started' from agent 'TRUTVBYGG01''
15:02:39.900, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper>(ControllerExecution.TestMessageReceiver)+ExternalJob.ProcessJob: invoking job processor for job 'ReceivedTestMessageWrapper for test message 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started' from agent 'TRUTVBYGG01''
15:02:39.900, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: invoking special job checker for job 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started'
15:02:39.900, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: successfully invoked special job checker for job 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started'
15:02:39.900, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: isSpecial = False
15:02:39.900, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Common.TestStateEvent: Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started'
15:02:39.900, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper>(ControllerExecution.TestMessageReceiver)+ExternalJob.ProcessJob: successfully invoked job processor for job 'ReceivedTestMessageWrapper for test message 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started' from agent 'TRUTVBYGG01''
15:02:39.900, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender)+ExternalJob.ProcessJob: invoking job processor for job 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started'
15:02:39.900, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: invoking special job checker for job 'Run {9363144a-38a7-4ee1-a920-1e1a3584859b}, Test {854d1b23-760d-4e32-a6c7-91b74b5f2409}: Started'
以下是来自生产服务器的类似摘录(完整日志can be seen here(来自不同但相同的运行)),显示事情开始挂起的地方:
16:33:50.260, TestAgentProcessReady: total # of execution agents=1.
16:33:50.260, ControllerExecution.TestAgentProcessReady: areAllAgentProcessesReady=True.
16:33:50.260, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Controller.ReceivedTestMessageWrapper>(ControllerExecution.TestMessageReceiver)+ExternalJob.ProcessJob: successfully invoked job processor for job 'ReceivedTestMessageWrapper for test message 'Microsoft.VisualStudio.TestTools.Execution.TestAgentProcessStartedMessage' from agent 'TRAPPUTVTCP01''
16:33:50.292, AgentProcessManager.StartTestAgentRun_DoWork: tests were queued to test agents.
16:33:50.292, ControllerExecution.SyncAllExecutionAgentsReady: finished waiting on m_agentProcessesInitialized: signaledIndex=0
16:33:50.292, StateMachine(RunState): SetNextState Started called
16:33:50.292, StateMachine(RunState): In state Started. Waiting for state change...
16:33:50.292, StateMachine(RunState): Exit wait for state change, current state is Started.
16:33:50.292, StateMachine(RunState): calling state handler for Started
16:33:50.292, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: invoking special job checker for job 'TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Started'
16:33:50.292, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: successfully invoked special job checker for job 'TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Started'
16:33:50.292, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: isSpecial = False
16:33:50.292, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Common.RunStateEvent: TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Started'
16:33:50.292, ControllerObject: RunStartedHandler called for run 453f4093-9409-40f3-9651-34caa1b8c92a
16:33:50.292, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry>(ControllerObject.RunQueueMessageProcessor).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry: Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry'
16:33:50.292, StateMachine(RunState): SetNextState Running called
16:33:50.292, StateMachine(RunState): In state Running. Waiting for state change...
16:33:50.292, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry>(ControllerObject.RunQueueMessageProcessor)+ExternalJob.ProcessJob: invoking job processor for job 'Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry'
16:33:50.292, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry>(ControllerObject.RunQueueMessageProcessor)+ExternalJob.ProcessJob: successfully invoked job processor for job 'Microsoft.VisualStudio.TestTools.Execution.ControllerQueueEntry'
16:33:50.292, StateMachine(RunState): Exit wait for state change, current state is Running.
16:33:50.292, StateMachine(RunState): calling state handler for Running
16:33:50.292, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: invoking special job checker for job 'TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Running'
16:33:50.292, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: successfully invoked special job checker for job 'TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Running'
16:33:50.292, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: isSpecial = False
16:33:50.292, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Common.RunStateEvent: TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Running'
16:33:50.292, StateMachine(RunState): In state Running. Waiting for state change...
16:33:50.292, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender)+ExternalJob.ProcessJob: invoking job processor for job 'TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Started'
16:33:50.292, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: invoking special job checker for job 'Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
16:33:50.307, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: successfully invoked special job checker for job 'Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
16:33:50.307, BackgroundSpecialJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: isSpecial = False
16:33:50.307, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver).TryEnqueueJob: Queuing job 'Type Microsoft.VisualStudio.TestTools.Common.TestMessageBulk: Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
16:33:50.307, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(ControllerExecution.TestMessageSender)+ExternalJob.ProcessJob: successfully invoked job processor for job 'TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Started'
16:33:50.307, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver)+ExternalJob.ProcessJob: invoking job processor for job 'Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
16:33:50.307, LocalRunMessageListener.OnProcessReceivedTestMessage: Handling message 'TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Started'
16:33:50.307, LocalRunMessageListener: RestartTimer
16:33:50.307, LocalRunMessageListener.OnProcessReceivedTestMessage: Handling message 'TRAPPUTVTCP01: Run {453f4093-9409-40f3-9651-34caa1b8c92a}: Running'
16:33:50.307, LocalRunMessageListener: RestartTimer
16:33:50.307, BackgroundJobProcessor<Microsoft.VisualStudio.TestTools.Common.TestMessage>(LocalRunMessageListener.TestMessageReceiver)+ExternalJob.ProcessJob: successfully invoked job processor for job 'Microsoft.VisualStudio.TestTools.Common.TestMessageBulk'
16:33:50.401, ControllerObject: RunQueueThread there are no runs in the queue.
16:33:50.510, ControllerObject: RunQueueThread waiting for runs/agents...
16:34:10.291, LocalRunMessageListener: RestartTimer
16:34:10.291, ControllerExecution: Sent heartbeat to listeners
16:34:30.321, LocalRunMessageListener: RestartTimer
16:34:30.321, ControllerExecution: Sent heartbeat to listeners
16:34:50.352, LocalRunMessageListener: RestartTimer
16:34:50.352, ControllerExecution: Sent heartbeat to listeners
16:35:10.382, LocalRunMessageListener: RestartTimer
16:35:10.382, ControllerExecution: Sent heartbeat to listeners
16:35:30.412, LocalRunMessageListener: RestartTimer
16:35:30.412, ControllerExecution: Sent heartbeat to listeners
16:35:50.443, LocalRunMessageListener: RestartTimer
我也尝试从管理员运行MSTest的位置运行命令提示符,但这似乎没有任何区别。
欢迎任何关于我的下一步应该是什么的建议!
答案 0 :(得分:19)
问题是由于Visual Studio 2010和Visual Studio 2012并排安装时MSTest出现错误。解决方案是为Visual Studio 2010安装Service Pack 1.
我通过查看 Windows Logs&gt;来实现这一点。 事件查看器中的应用程序。在那里我发现源 VSTTAgentProcess 中的错误(在我查看的任何MSTest跟踪日志中都没有出现错误):
(QTAgent32.exe, PID 6912, Thread 9) AgentObject.OnBackgroundSendTestMessage: Connection to controller was lost.
System.Runtime.Remoting.RemotingException:
The argument type 'Run {b816a0d9-50f3-490a-96b8-479555466167}, Test {8a2710b4-3cf9-441c-bd5c-0efb0601e059}: Started' cannot be converted into parameter type 'Microsoft.VisualStudio.TestTools.Common.TestMessage'.
---> System.InvalidCastException: Object must implement IConvertible.
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Runtime.Remoting.Messaging.Message.CoerceArg(Object value, Type pt)
--- End of inner exception stack trace ---
通过Google搜索此异常,然后我转到this post explaining the VS 2010/2012 issue。
还值得一提的是,我必须安装Microsoft Office Developer Tools before I was able to install VS2010 SP1。
答案 1 :(得分:0)
我有相同的症状,但设置略有不同:我正在准备一台vs2015建筑机器,必须建立一个从vs 2010移植的vs2015项目,托管在tfs 2010上,我知道:非常混乱。 我在这台构建机器上没有安装vs 2010
我已经解决了首先安装MSDN提供的“Microsoft Visual Studio 2010 Shell(集成)可再发行组件包”,然后在其上应用VS 2010 SP1。 使用“隔离”shell似乎不起作用 感谢帮助解决这个迷宫o_O