问题描述
我正在将一些虚拟值传递给测试方法,但它在 Pipeline VStest 任务中失败并显示以下错误消息。
错误信息:
System.AggregateException:发生一个或多个错误。 ---> Newtonsoft.Json.JsonSerializationException:无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.IEnumerable`1[TransactionTables.Service.Entities.Header]”因为该类型需要一个 JSON 数组(例如 [1,2,3])才能正确反序列化。 要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,3])或更改反序列化类型,使其成为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型)可以从 JSON 对象反序列化的数组或列表)。 JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。 路径“错误”,第 2 行,位置 11。
堆栈跟踪:
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader,Type objectType,JsonContract contract,JsonProperty member,JsonContainerContract containerContract,JsonProperty containerMember,Object existingValue)
在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader,Object existingValue)
在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Boolean checkAdditionalContent)
在 Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType)
在 Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader,Type objectType)
在 System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.ReadFromStream(Type type,Stream readStream,Encoding EffectiveEncoding,IFormatterLogger formatterLogger)
在 System.Net.Http.Formatting.JsonMediaTypeFormatter.ReadFromStream(Type type,IFormatterLogger formatterLogger)
在 System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.ReadFromStream(Type type,HttpContent content,IFormatterLogger formatterLogger)
在 System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.ReadFromStreamAsync(Type type,IFormatterLogger formatterLogger)
--- 从上一个抛出异常的位置开始的堆栈跟踪结束 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任务任务)
在 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at System.Net.Http.HttpContentExtensions.<ReadAsAsyncCore>d__0
1.MoveNext()
--- 内部异常堆栈跟踪结束 ---
在 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
在 System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task
1.get_Result()
在 C:\Users\username\Documents\Visual Studio 2015\Project\TransactionTables.Service.Tests\TransactionTablesControllerTest.cs:line 35 中的 TransactionTables.Service.Tests.TransactionTablesControllerTest.HeaderCount()
虚拟数据:
public void HeaderCount()
{
var result = 2 + 2;
Assert.AreEqual(result,4);
}
现有方法:
public void HeaderCount()
{
var Url = new Uri("http://localhost/Header-service/Header");
using (var client = new HttpMessageInvoker(Server))
using (var request = new HttpRequestMessage(HttpMethod.Get,Url))
{
var requestHeader = request.SetRequestHeaders();
using (var response = client.SendAsync(requestHeader,CancellationToken.None).Result)
{
var eTAdminMasters = response.Content.ReadAsAsync<IEnumerable<TransactionTables.Service.Entities.Header>>().Result;
var count = eTAdminMasters.Count();
Assert.IsNotNull(count);// test method assert
}
}
}
}
}
对于虚拟值和现有测试方法,我都收到相同的错误消息。我尝试评论和删除测试方法,但随后也在管道 VStest 任务中收到相同的错误消息。我的本地路径反映在堆栈跟踪消息中。 请在这里提供帮助。
提前致谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)