Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UnitTesting assembly.GetTypes()仅在生成管道中引发异常_C#_Unit Testing_Azure Devops_Pipeline_Assemblies - Fatal编程技术网

C# UnitTesting assembly.GetTypes()仅在生成管道中引发异常

C# UnitTesting assembly.GetTypes()仅在生成管道中引发异常,c#,unit-testing,azure-devops,pipeline,assemblies,C#,Unit Testing,Azure Devops,Pipeline,Assemblies,单元测试调用以下方法。它在本地运行时通过,但在作为Azure DevOps构建管道的一部分运行时由于assembly.GetTypes()上的LoaderException而失败。我不知道如何调试它,因为它不会在本地发生。通常,我会在调试模式下运行这个程序,并查看LoaderException。管道任务VSTest@2只记录堆栈跟踪 Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly

单元测试调用以下方法。它在本地运行时通过,但在作为Azure DevOps构建管道的一部分运行时由于assembly.GetTypes()上的LoaderException而失败。我不知道如何调试它,因为它不会在本地发生。通常,我会在调试模式下运行这个程序,并查看LoaderException。管道任务VSTest@2只记录堆栈跟踪

Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly assembly in assemblies)
{
   if (assembly != null)
   { Type[] types = assembly.GetTypes(); }
}

解决方案是通过添加distributionBatchType来更改yaml管道:“basedOnAssembly”,如下所示。打开诊断功能也解决了此问题,但不是理想的解决方案

- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **\Tests\**
      !**\*TestAdapter.dll
      !**\obj\**
    searchFolder: '$(System.DefaultWorkingDirectory)'
    diagnosticsEnabled: false
    distributionBatchType: 'basedOnAssembly'

首先查看
LoaderException
的异常消息,以及任何
InnerExceptions
在管道上运行单元测试时,我将如何执行此操作?此构建管道系统中是否有日志记录功能?查看您的测试输出?捕获异常并记录所需的所有内容?创建一个专门的控制台应用程序,只复制问题并打印您需要的内容?要有想象力!将Syste.Debug设置为true以检查是否存在感兴趣的问题这也修复了我们在另一个管道上遇到的问题,其中VSTest无法找到某些DLL。
- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **\Tests\**
      !**\*TestAdapter.dll
      !**\obj\**
    searchFolder: '$(System.DefaultWorkingDirectory)'
    diagnosticsEnabled: false
    distributionBatchType: 'basedOnAssembly'