使用VS2017 MVC Web Api项目,我进行了一些单元测试,这些测试在单独运行时可以通过,但是在并行运行时,出现以下错误。我想知道如何能够并行运行这些测试。
System.Reflection.ReflectionTypeLoadException
HResult = 0x80131602
Message =无法加载一种或多种请求的类型。取回 有关更多信息,请参见LoaderExceptions属性。无法加载文件或程序集'Newtonsoft.Json,版本= 6.0.0.0, 文化=中性,PublicKeyToken = 30ad4fe6b2a6aeed”或其中之一 依赖性。找到的程序集的清单定义不 匹配程序集参考。 (来自HRESULT的异常: 0x80131040)“:”“ Newtonsoft.Json,版本= 6.0.0.0,文化=中性, PublicKeyToken = 30ad4fe6b2a6aeed
发生异常的代码在s.GetTypes()下:
using Newtonsoft.Json.Linq;
public static class Factory
{
private static IEnumerable<MyAbstractClass> GetObjects(JObject parsedJson)
{
var list = new List<MyAbstractClass>();
var type = typeof(MyAbstractClass);
AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => type.IsAssignableFrom(p) && p.IsClass && !p.IsAbstract)
.ToList()
.ForEach(t =>
{
var item = (MyAbstractClass)Activator.CreateInstance(t);
if (item.CanProcess(parsedJson)) list.Add(item);
});
return list;
}
}
我在项目中引用了Newtonsoft.Json 11.0.0.0版本(所以我不确定为什么要使用6.0.0.0版本)。
我确保web.config具有:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
在并行运行期间,一个测试(大概是第一个运行)通过,其他所有测试均因相同的异常而失败。
答案 0 :(得分:1)
我已经从Newtonsoft.Json 11.0.1版本更新到11.0.2,看来已经解决了我的问题。