Ich versuche, ein wenig Test-First-Entwicklung zu tun, und ich versuche, dass meine Klassen mit einem Attribut gekennzeichnet sind, um zu überprüfen:Testen, ob eine Klasse ein Attribut hat?
[SubControllerActionToViewDataAttribute]
public class ScheduleController : Controller
Wie Unit-Test muss ich, dass die Klasse dieses Attribut hat zugewiesen dazu?
nur zu überprüfen, ob das Attribut vorhanden ist, das ist in der Regel alles, was für parameterlose/eigenschaftslose Attribute benötigt wird, ist es billiger zu verwenden .IsDefined, da es die Metadaten abfragen wird, und das Attributobjekt nicht deserialisiert und instanziiert. –
Wie ist der Punkt über IsDefined ist billiger ... aber in den meisten Fällen (und insbesondere Unit-Tests) ist es unwahrscheinlich, dass Sie den Unterschied bemerken. Vielleicht, wenn es eine enge Schleife im Produktionscode war ... –
@ Marc - Ich stimme zu, dass der Unterschied in der Leistung wahrscheinlich nicht in einem Komponententest auffallen würde. Ich würde das Attribut bekommen, wenn ich es benutzen müsste, was in den meisten Fällen das Szenario ist. Ich habe kürzlich IsDefined in einem Framework verwendet, das ich geschrieben habe, um eine Spalte in einem Dropdown-Feld mit sortierbaren Feldern auszuschließen. Dies funktionierte gut, da ich das Attribut nicht selbst verwenden musste. – RichardOD