C# NUnit:Automapper<;IDataReader,Dto>;。ConvertUsing()返回具有null属性的Dto

C# NUnit:Automapper<;IDataReader,Dto>;。ConvertUsing()返回具有null属性的Dto,c#,nunit,automapper,mstest,idatareader,C#,Nunit,Automapper,Mstest,Idatareader,我正在使用AutoMapper将IDataReader映射到一个简单的DTO 我可以在使用FormMember时映射属性,但在使用ConstructUsing/ConvertUsing时无法映射属性。在本例中,我的所有NUnit测试都失败,因为AutoMapper返回一个带有null属性的DTO。 有趣的是,这种行为在MSTest中不会发生:在MSTest下运行测试时,映射工作正常 代码如下: public class Dto { public string Name { get; set; }

我正在使用AutoMapper将IDataReader映射到一个简单的DTO

我可以在使用FormMember时映射属性,但在使用ConstructUsing/ConvertUsing时无法映射属性。在本例中,我的所有NUnit测试都失败,因为AutoMapper返回一个带有null属性的DTO。 有趣的是,这种行为在MSTest中不会发生:在MSTest下运行测试时,映射工作正常

代码如下:

public class Dto
{
public string Name { get; set; }
public string Value { get; set; }
}
这将通过NUnit和MSTest:

Mapper.CreateMap<IDataReader, Dto>()
.ForMember(x => x.Name, map => map.MapFrom(reader => reader["Name"]))
.ForMember(x => x.Value, map => map.MapFrom(reader => reader["Value"]));
Mapper.CreateMap()
.ForMember(x=>x.Name,map=>map.MapFrom(reader=>reader[“Name”]))
.ForMember(x=>x.Value,map=>map.MapFrom(reader=>reader[“Value”]);
这仅在MSTest中通过,并在NUnit中返回具有null属性的Dto:

Mapper.CreateMap<IDataReader, Dto>()
.ConvertUsing(Map); // ConstructUsing doesn't work either

private Dto Map(IDataReader reader)
{
    return new Dto
    {
         Name = (string)reader["Name"],
         Value = (string)reader["Value"]
    };
}
Mapper.CreateMap()
.ConvertUsing(Map);//构造函数也不起作用
专用Dto地图(IDataReader阅读器)
{
返回新Dto
{
名称=(字符串)读取器[“名称”],
值=(字符串)读取器[“值”]
};
}
在NUnit中甚至没有调用MyTestMethod

这是AutoMapper中的错误吗?在努尼特?两者都有

我应该不使用AutoMapper进行IDataReader映射吗


提前谢谢。

在我无意中发现这个问题后,

我发现这与NUnit/MsTest无关,只是由于AutoMapper.Net4.DLL在我的项目中引起的

此DLL包含DataReaderMapper,它覆盖了我的自定义IDataReader映射。 由于我的实际项目列与对象的属性名称不匹配,DataReaderMapper只返回null

(至于NUnit/MsTest,我有不同的项目,并且没有怀疑其中一个项目中有额外的DLL。在缩小问题范围后,我能够在两个框架上重现它。)

从我的项目中删除AutoMapper.Net4.DLL解决了这个问题


很抱歉提出了一个误导性的问题:)

什么是
MyTestMethod
?你能发布完整的单元测试吗?