gpt4 book ai didi

nunit - TeamCity NUnit 运行程序因 x86 - x64 - MSIL 差异而失败

转载 作者:行者123 更新时间:2023-12-03 02:13:49 27 4
gpt4 key购买 nike

我有一个包含很多项目的解决方案,其中一些也有测试项目。这些都是针对 Any CPU 平台编译的。

在 TeamCity 中,我有一个 NUnit 2.6.4 的构建配置,在其中指定平台:auto (MSIL)版本:4.0

当我运行构建时,测试失败并显示以下消息:

NUnit error running tests in 'C:\BuildAgent\work\a58fc6cd9bf63032\JsonApi.Tests\obj\Release\JsonApi.Tests.dll' assembly
Loading assembly is compiled for v4.0.30319, MSIL
NUnit runner runtime is v4.0.30319, x64

更奇怪的是,当我刚刚关闭“首先运行最近失败的测试”(并且没有更改任何其他内容)时,我得到了以下内容:

NUnit error running tests in 'C:\BuildAgent\work\a58fc6cd9bf63032\JsonApi.Owin.Tests\obj\Release\JsonApi.Owin.Tests.dll' assembly
Loading assembly is compiled for v4.0.30319, MSIL
NUnit runner runtime is v4.0.30319, x86

请注意,在一种情况下,运行程序是 x86,而在另一种情况下,运行程序是 x64。在这两种情况下,它们都无法成功加载为 MSIL 编译的程序集。

我认为我的build设置出了问题,但是什么?

最佳答案

基于more detailed log您提供的,构建失败的真正原因似乎是:

...  
System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 or one of its dependencies.
The system cannot find the file specified.
File name: 'System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35|'

Server stack trace:
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)
at System.Reflection.RuntimeAssembly.GetExportedTypes()
at NUnit.Core.CoreExtensions.InstallAdhocExtensions(Assembly assembly)
at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)
at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites)
at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites)
at NUnit.Core.TestSuiteBuilder.Build(TestPackage package)
at NUnit.Core.SimpleTestRunner.Load(TestPackage package)
at NUnit.Core.ProxyTestRunner.Load(TestPackage package)
at NUnit.Core.ProxyTestRunner.Load(TestPackage package)
at NUnit.Core.RemoteTestRunner.Load(TestPackage package)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object|[|] args, Object server, Object|[|]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
...

我相信这正是因为 SO thread 中提到的原因而发生的。我已在评论中链接,即您正在从 obj 文件夹运行测试,而它应该是 bin 。但这仍然只是一个猜测,因为您没有提供 NUnit 步骤配置。

要解决此问题,您应该明确包含单元测试的程序集所在的路径。像这样的事情:

**\bin\**\*.Tests.dll

在“列出程序集文件:”下。这样,obj 文件夹中的程序集将不会得到测试,请参阅 this SO thread .

关于nunit - TeamCity NUnit 运行程序因 x86 - x64 - MSIL 差异而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31401111/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com