C# 如何验证是否已为所有用途创建自动映射?
我想进行一个测试,验证每次使用C# 如何验证是否已为所有用途创建自动映射?,c#,automapper,roslyn,C#,Automapper,Roslyn,我想进行一个测试,验证每次使用Automapper.Mapper.Map(),在我的引导程序中是否有相应的映射配置(Automapper.Mapper.CreateMap()) 我正要使用与编译器的接口,找到Map方法的所有用法,然后尝试使用这些实例进行映射。虽然这样做可以奏效,但我想我更愿意使用已经存在的东西 这是否存在?如果没有,还有比Roslyn更好的方法吗?问题是你不能确定-在很多情况下,它是不确定的(例如,Y类型的模型可能会被传递给AutoMapper downcast到对象) 您应该
Automapper.Mapper.Map()
,在我的引导程序中是否有相应的映射配置(Automapper.Mapper.CreateMap()
)
我正要使用与编译器的接口,找到Map
方法的所有用法,然后尝试使用这些实例进行映射。虽然这样做可以奏效,但我想我更愿意使用已经存在的东西
这是否存在?如果没有,还有比Roslyn更好的方法吗?问题是你不能确定-在很多情况下,它是不确定的(例如,
Y
类型的模型可能会被传递给AutoMapper downcast到对象
)
您应该提供映射实际消耗的覆盖率,作为正常代码覆盖率的一部分
这是否意味着每个映射方法的单元测试都是一个不同的问题…问题是你不能确定-在很多情况下,它是不确定的(例如,类型为
Y
的模型可能会被传递给AutoMapper downcast到对象
)
您应该提供映射实际消耗的覆盖率,作为正常代码覆盖率的一部分
这是否意味着每个映射方法的单元测试都是一个不同的问题…您在元编程方面走得太深了 您可以做的最好的事情是将您的映射类包含到一个或多个名称空间,并检查这些名称空间中的所有类是否都有映射。为此,您不需要Roslyn、Cecil或任何类似的东西
如果您要放弃编译时检查,至少您必须建立一些约定,如果约定定义良好,您可以验证它们。您在元编程方面走得太深了 您可以做的最好的事情是将您的映射类包含到一个或多个名称空间,并检查这些名称空间中的所有类是否都有映射。为此,您不需要Roslyn、Cecil或任何类似的东西 如果您要放弃编译时检查,至少您必须建立一些约定,如果约定定义良好,您可以验证它们。+1+1