仅在CI服务器

时间:2015-07-07 15:29:16

标签: .net json.net nunit teamcity

TeamCity 9和NUnit 2.6.4在运行测试时出现问题,它在本地运行良好。问题似乎是引用了Newtonsoft.Json(像往常一样)。

Test(s) failed. System.IO.FileLoadException : Could not load file or assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
   at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter..ctor()
   at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor()
   at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters()
   at System.Web.Http.HttpConfiguration.DefaultFormatters(HttpConfiguration config)
   at System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes)
   at MyCompany.Testing.WebAPI.ControllerTestAssistant.PrepareActionContext(HttpRequestMessage request, IHttpController controller) 
   at MyCompany.Web.Http.HttpResponseBuilderTests.PrepareActionContext(HttpRequestMessage request) 
   at MyCompany.Web.Http.HttpResponseBuilderTests.PrepareBuilder(String url) 
   at MyCompany.Web.Http.HttpResponseBuilderTests.HttpResponseBuilder_BuildResponse__when__success_get_with_no_rowversion__then__200OK_with_no_etag() 

解决方案是巨大的。我已将所有Json.NET软件包更新到7.x,并检查了所有配置文件中的所有绑定引用。

在所有团队的开发PC上,一切都很好。这只是构建服务器上的问题,在NUnit运行程序下。

我认为System.Net.Http.Formatting在版本6.x上有一个很难的参考。就像测试运行器没有注意到配置中的绑定重定向一样。

我将开始削弱Json.NET,它变得比它的价值更麻烦,并且VS没有帮助解决这些问题。

感谢您的帮助。

Fusion日志显示未看到程序集绑定重定向,即使它在那里。同事检查了理智。

这很奇怪。

已删除测试项目的app.config中的所有其他重定向,并尝试仅使用Json.NET重定向。

  

找不到应用程序配置文件

在Fusion日志中,越来越近了!

1 个答案:

答案 0 :(得分:0)

知道了。

我有另一个测试DLL的引用,因此bin文件夹中最后包含两个*Tests.DLL文件。

TeamCity由通配符配置,然后在两者中运行测试。引用的DLL没有配置文件,无法加载正确版本的Json.NET

引用的DLL中的测试已经运行并通过。我引用了另一个测试库来获取一些帮助器设置代码!

通常,我将TeamCity配置为在显式DLL路径上运行测试。