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