我有在NUnit GUI和Resharper中传递的单元测试,但在Team City运行它们时失败

时间:2014-11-27 07:50:00

标签: nunit teamcity

我设置了一个TeamCity服务器来构建多个解决方案,然后使用NUnit Test Runner在其中运行单元测试。

这已经好几个月了;但是,使用我们的最新版本,我遇到以下错误:

  

SetUp方法失败。 SetUp:System.IO.FileLoadException:无法   加载文件或程序集' log4net,版本= 1.2.13.0,Culture = neutral,   公钥= 669e0ddf0bb1aa2a'或其中一个依赖项。该   定位程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)

只有在整个系统中包含9个测试的单个TestFixture才会发生。使用ReSharper或NUnit GUI运行时,测试全部通过。

正在测试的项目和测试项目本身都正确引用了Nuget包。由于只安装了一个版本的Log4Net,因此不需要运行时程序集绑定重定向。

是否还有其他人遇到过他们已经解决过的类似问题,或者有什么想法可能会出现问题?为什么它在本地而不是在服务器上工作,特别是考虑到先前传递的相同测试。

本地计算机和TeamCity服务器上的NUnit版本都是相同的。

1 个答案:

答案 0 :(得分:4)

我会回答我自己的问题,以防其他人遇到这个问题。

问题似乎是Log4Net的程序集清单包装错误,或者至少与人们的期望不同。

这是因为DLL版本为1.2.13,但NuGet包版本为2.0.3。

我们所做的是添加如下所示的装配绑定,这解决了问题:

<dependentAssembly>
    <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="2.0.3" />
</dependentAssembly>

我完全不知道为什么这只是因为~60正在构建的一个项目或为什么它在我的开发环境VS / ReSharper Nunit测试运行器中工作而失败,但TeamCity失败了!