我有一个ASP.NET Web API项目和一个单元测试项目来测试Web API项目中的ApiControllers。每个TestMethod都会实例化它要测试的ApiController,如下所示:
[TestClass]
public class MyTestClass
{
[TestMethod]
public void MyTestMethod()
{
MyApiController controller = new MyApiController();
controller.Configuration = new HttpConfiguration();
// Other configuration steps
IEnumerable<MyObjects> myObjects = controller.Get();
// Assertions
}
}
如果我在本地构建并从Test Explorer运行测试,则运行正常。但是,当我在VisualStudio.com上的TFS实例中排队新构建时,我的所有单元测试都失败,并从HttpConfiguration ctor抛出以下异常:
MyTestMethod抛出异常:System.MissingMethodException:方法没有 发现:'无效 Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(布尔值)”
这是callstack:
at System.Net.Http.Formatting.JsonContractResolver..ctor(MediaTypeFormatter formatter)
at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor()
at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters()
at System.Web.Http.HttpConfiguration.DefaultFormatters()
at System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes)
at System.Web.Http.HttpConfiguration..ctor()
at MyTestClass.MyTestMethod()
我在标准.NET 4.5 dll之外的所有依赖项都在nuget包中,这些包被检入到源控件中以供TeamBuild使用。这是使用VisualStudio.com的构建服务器时管理依赖关系的唯一方法(我知道)。
因为TeamBuild是在云中运行而不是在我拥有的机器上运行,所以我很少有工具来诊断它。任何帮助将不胜感激。
答案 0 :(得分:0)
我在标准.NET 4.5 dll之外的所有依赖项都在nuget中 检查到源控件的包将被使用 TeamBuild。
您是否将托管构建控制器配置为指向该自定义程序集,请参阅以下图像,如果是,并且您仍然遇到相同的错误,请尝试在本地构建服务器上重现该案例。
答案 1 :(得分:0)
安装最新版本。 下载链接: http://json.codeplex.com/downloads/get/534445