Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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# 如何找到“a”的来源;卸载应用程序域时遇到异常“;和Nunit跑步者一起?_C#_Nunit_Nunit 3.0 - Fatal编程技术网

C# 如何找到“a”的来源;卸载应用程序域时遇到异常“;和Nunit跑步者一起?

C# 如何找到“a”的来源;卸载应用程序域时遇到异常“;和Nunit跑步者一起?,c#,nunit,nunit-3.0,C#,Nunit,Nunit 3.0,我们在不同的组件中进行了大量测试(6000+)。我们使用Nunit测试适配器在本地Azure代理上运行它们 这需要很长时间,所以我们启动了并行运行 yaml步骤现在如下所示: - task: VSTest@2 timeoutInMinutes: 300 inputs: testSelector: 'testAssemblies' testAssemblyVer2: '*.Test*.dll' searchFolder: '$(System.

我们在不同的组件中进行了大量测试(6000+)。我们使用Nunit测试适配器在本地Azure代理上运行它们

这需要很长时间,所以我们启动了并行运行

yaml步骤现在如下所示:

  - task: VSTest@2
    timeoutInMinutes: 300
    inputs:
      testSelector: 'testAssemblies'
      testAssemblyVer2: '*.Test*.dll'
      searchFolder: '$(System.DefaultWorkingDirectory)/$(buildConfiguration)'
      codeCoverageEnabled: false
      platform: 'Any CPU'
      uiTests: false
      configuration: '$(buildConfiguration)'
      rerunFailedTests: false
      pathtoCustomTestAdapters: 'Solution/packages/NUnit3TestAdapter.3.12.0/build/net35'
      minimumExpectedTests: 1000
      runInParallel: true
      distributionBatchType: basedOnAssembly
      failOnMinTestsNotRun: true
      resultsFolder: 'testResults'
      runSettingsFile: '$(Build.SourcesDirectory)\azure-tests.runsettings'
    #continueOnError: true
现在,我们有一些测试没有通过。我已经分析了其中的一个,基本上,它失败了,因为在某个点上,它做了一个类型为的
。集合中的对象确实实现了这个接口,所以我想我一定有一个问题,这个程序集加载了2次,并且这个接口被认为与创建的对象不同

当我查看日志时,我现在看到了这一点,这似乎证实了这一理论:

##[warning]RunMessage : Exception NUnit.Engine.NUnitEngineUnloadException,    Exception thrown unloading tests from C:\DevOp\2\s\debug\Acceptance.Tests.dll
##[warning]RunMessage : Exception encountered unloading application domain
##[warning]RunMessage :    at NUnit.Engine.Services.DomainManager.DomainUnloader.Unload()
   at NUnit.Engine.Runners.TestDomainRunner.UnloadPackage()
   at NUnit.Engine.Runners.AbstractTestRunner.Dispose(Boolean disposing)
   at NUnit.Engine.Runners.AbstractTestRunner.Dispose()
   at NUnit.Engine.Runners.MasterTestRunner.Dispose(Boolean disposing)
   at NUnit.Engine.Runners.MasterTestRunner.Dispose()
   at NUnit.VisualStudio.TestAdapter.NUnit3TestExecutor.RunAssembly(String assemblyPath, TestFilter filter) in D:\repos\nunit\nunit3-vs-adapter\src\NUnitTestAdapter\NUnit3TestExecutor.cs:line 321
##[warning]RunMessage : Innerexception: NUnit.Engine.NUnitEngineException: Exception encountered unloading application domain: Error while unloading appdomain. (Exception from HRESULT: 0x80131015)
Application domain name: domain-dcec2bc8-Acceptance.Tests.dll
Application domain BaseDirectory: C:\DevOp\2\s\debug\
我已经搜索过了,但没有找到解决这个问题的方法。我可以理解,我可能有一些东西阻止程序集正确卸载,但是我们有6000多个测试,15个测试程序集引用了一些生产代码和一些测试代码。所有测试的执行时间约为2小时45分


我如何知道什么不能卸载(以及为什么?)您将如何继续解决此错误?

您可以在本地运行它并尝试重新生成它并检查事件日志,然后为测试此案例创建一个新管道或修改此管道,并将测试限制在失败测试所在的程序集上。您可以通过更改
testAssemblyVer2
来执行此操作。它可能只是
Acceptance.Tests.dll
。另外,请确保它引用了所有需要的程序集,而这些程序集不是通过反射直接引用的。@KrzysztofMadej我们目前只对每个程序集进行并行化,所以每个程序集运行程序集不会显示错误?@PavelAnikhouski如何获得比Azure更多的信息?@J4N如果你问我,我会告诉你-我不知道。请尝试并检查。您可以在本地运行它并尝试复制它并检查事件日志,然后为测试此案例创建一个新管道或修改此管道,并将测试限制到测试失败的程序集。您可以通过更改
testAssemblyVer2
来执行此操作。它可能只是
Acceptance.Tests.dll
。另外,请确保它引用了所有需要的程序集,而这些程序集不是通过反射直接引用的。@KrzysztofMadej我们目前只对每个程序集进行并行化,所以每个程序集运行程序集不会显示错误?@PavelAnikhouski如何获得比Azure更多的信息?@J4N如果你问我,我会告诉你-我不知道。请检查一下。