在执行单元测试步骤时,如何在以前工作的VSTS构建超时时向调试添加更好的日志记录



我有一个带有单元测试的VSTS构建,它以前在VSTS构建中工作。本周,由于超时,它停止了工作。

故障发生的原因是60分钟后超时。以下是我们所知道的:

  • 测试库只包含1个测试。我们通过指向VSTS的单元测试配置中的测试程序集来运行测试
  • 测试仍然在本地运行(运行时间<1秒(
  • 即使我删除了实际的测试,并用一个只检查Assert.IsTrue(true(的琐碎测试来替换它,测试仍然会超时。因此,我们得出结论,导致问题的原因是测试配置,而不是测试本身
  • 我尝试在测试中添加额外的调试日志,但测试执行似乎从未真正开始
  • 似乎未生成trx日志文件。它似乎根本没有真正尝试运行测试
  • 我们在VSTS托管的虚拟机和我们自己的虚拟机上都尝试过,结果都是一样的
  • 我们尝试在构建中添加一个新的测试步骤,并指出测试DLL对默认值没有其他修改,但它仍然会被卡住
  • 我们将原来的测试步骤指向了另一个测试DLL,测试通过了!因此,与这个特定的lib相关的东西是不同的(但同样,即使我删除了所有测试,它仍然会被卡住(

是否有人对其他事情有其他建议,试图缩小可能导致这种情况的原因(例如,VSTS中的跟踪日志记录(?下面的日志文件显示了我们单元测试配置的一些细节,但如果其他细节有帮助,请告诉我

故障日志如下所示:

> ============================================================================== 2018-07-18T20:14:25.1963123Z Run the tests locally using
> vstest.console.exe 2018-07-18T20:14:25.1964566Z
> ======================================================== 2018-07-18T20:14:25.1965645Z Test selector : Test assemblies
> 2018-07-18T20:14:25.1966925Z Test assemblies : **<PathToTestLib>.dll
> 2018-07-18T20:14:25.1968187Z Test filter criteria : null
> 2018-07-18T20:14:25.1968810Z Search folder : C:vsts-agent_work4s
> 2018-07-18T20:14:25.1969311Z Run settings file :
> C:vsts-agent_work4s 2018-07-18T20:14:25.1970327Z Run in parallel :
> false 2018-07-18T20:14:25.1970792Z Run in isolation : false
> 2018-07-18T20:14:25.1972913Z Path to custom adapters : null
> 2018-07-18T20:14:25.1973153Z Other console options : null
> 2018-07-18T20:14:25.1973381Z Code coverage enabled : false
> 2018-07-18T20:14:25.1974004Z Rerun failed tests: false
> 2018-07-18T20:14:25.1974423Z VisualStudio version selected for test
> execution : latest 2018-07-18T20:14:25.3811086Z
> ======================================================== 2018-07-18T20:14:30.6014691Z [command]"C:Program Files
> (x86)Microsoft Visual
> Studio2017EnterpriseCommon7IDECommonExtensionsMicrosoftTestWindowvstest.console.exe"
> @C:vsts-agent_work_temp2aa40f41-8ac7-11e8-b190-a1cdff2b8b30.txt
> 2018-07-18T20:14:30.8198002Z Microsoft (R) Test Execution Command Line
> Tool Version 15.7.2 2018-07-18T20:14:30.8206458Z Copyright (c)
> Microsoft Corporation.  All rights reserved.
> 2018-07-18T20:14:30.8206862Z  2018-07-18T20:14:30.8227447Z
> vstest.console.exe  2018-07-18T20:14:30.8228082Z
> "C:vsts-agent_work4spartnersexooutlookOutlookAnalysisSolution.TestbinDebugOutlookAnalysisSolution.Test.dll"
> 2018-07-18T20:14:30.8228647Z /logger:"trx"
> 2018-07-18T20:14:31.0672644Z Starting test execution, please wait...
> 2018-07-18T21:14:05.8979923Z ##[error]The operation was canceled.
> 2018-07-18T21:14:05.9027909Z ##[section]Finishing: Unit Tests

我们找到了挂起的来源。它位于用"AssemblyInitialize"特性标记的测试类方法中。

[TestClass]
public class TestClassInitializer
{
[AssemblyInitialize]
public static void AssemblyInit(TestContext context)
{
LocalResourceDeployment.CopyResources();
}
}

CopyResources((中存在一个错误,该错误未在本地显示,但导致VSTS中的powershell窗口等待控制台输入。

我们改进了这个初始化方法中的跟踪日志记录,这样,如果将来再次失败,我们至少会有一个指向测试停滞位置的指针。例如:

Trace.WriteLine("Starting test assembly initializtion.");

最新更新