public void All_View_Models_Should_Override_ToString_Method()
{
var viewModelNames = new List<string>();
foreach (Assembly assembly in KnownAssemblies)
{
IList<Type> types = assembly.GetTypes().Where(type => type.IsClass && type.Name.ToLower().EndsWith("viewmodel")).ToList();
if (types.Count > 0)
{
foreach (Type type in types)
{
MethodInfo method = type.GetMethod("ToString", BindingFlags.Instance | BindingFlags.Public);
if (method.DeclaringType != type)
{
viewModelNames.Add(type.FullName);
}
}
}
}
// Format view models name, which didn't have overrided ToString() method:
var builder = new StringBuilder();
foreach (string name in viewModelNames)
{
builder.Append(name + ", ");
}
Assert.AreEqual(0, viewModelNames.Count, string.Format("Not all view models has ToString override methods: {0}", builder));
}
}