Der Versuch, ein Plugin in CRM 2011 zu debuggen, kann extrem schwierig sein. Es gibt nicht nur Probleme, die .pdb-Dateien am richtigen Ort auf dem Server zu haben, sondern jedes Mal, wenn Sie eine Änderung an der Codierung vornehmen, müssen Sie sich die Mühe machen, das Plugin zu installieren und neu zu registrieren. Da der Auslöser in CRM selbst ist, ist es schwierig, einen Komponententest dafür zu erstellen.
Mein aktueller Prozess zum Schreiben eines Komponententests für ein brandneues Plugin ist eher langsam und fehlerbehaftet, geht aber in etwa so:
Dies ist ein Schmerz zu tun. Von der korrekten Darstellung der Bilder über das Erstellen der Dummy-Daten bis hin zum Zurücksetzen der Bilder bei jeder Testdurchführung scheint viel Raum für Verbesserungen zu geben.
Wie kann ich ein Plug-in testen, ohne es wirklich aus CRM auszulösen, oder zuerst alle Tests durchlaufen, um es in CRM zu debuggen, und einmalige Dummy-Daten für jeden Test erstellen? Wie kann ich mithilfe von Injection das Löschen, Erstellen, Testen, Überprüfen und Löschen von Daten in CRM für jeden Komponententest überflüssig machen?
Diese Frage bekommt immer noch einige Treffer, also dachte ich, ich würde hinzufügen, was die beiden (die ich kenne) Open-Source-Projekte, die gefälschte CRM-Instanzen für Komponententests bereitstellen:
Checkout dieses Video habe ich erstellt, um die Unterschiede zu vergleichen und zu vergleichen.
Wie kann ich ein Plug-in testen, ohne es wirklich aus CRM auszulösen, oder alle Debugging-Prozeduren in CRM durchlaufen und einzigartige Dummy-Daten für jeden Test erstellen?
Mit Spott. Siehe diesen Link für welche Klassen mit RhinoMocks zu verspotten. Klingt so, als ob du in dieser Hinsicht auf dem Weg bist.
Wie kann ich mithilfe von Injection für jeden Komponententest das Löschen, Erstellen, Testen, Verifizieren und Löschen von Daten in CRM überflüssig machen?
Das Eingeben von Werten für die Eingabeparameter kann durch Stubbing in einer handgesteuerten Instanz der Entität erfolgen, die Sie manipulieren möchten:
%Vor%Ist das nicht einfacher, als die XML-Daten zu erfassen und die gesamte Eingabeparameter-Sammlung zu rehydratisieren?
BEARBEITEN: Für den Datenzugriff besteht die übliche Empfehlung darin, den Datenzugriff in Klassen zu integrieren. Das Repository-Muster ist beliebt, aber zu viel für das, was wir hier brauchen. Für Ihre Plugins-Ausführungsklassen "injizieren" Sie Ihre verspottete Klasse bei der Erstellung. Ein leerer Konstruktor, der das Standardrepository initialisiert, und ein zweiter Konstruktor, der ein IRepository übernimmt.
%Vor%Abhängig von der Komplexität Ihrer Plugin-Schritte kann dies dazu führen, dass viele Repositories an jede Klasse übergeben werden, was zu einer Belastung führen könnte. Dies ist jedoch die Grundlage, der Sie bei Bedarf Komplexität hinzufügen können.
Ich serialisiere den Ausführungskontext des Plugins zur Verwendung mit Komponententests in eine Datei. Es gibt ein gutes Projekt auf Codeplex, das dies Ссылка
machtErleichtert das Debuggen und Komponententesten und Sie können reale Tests "aufzeichnen".
Eine wirklich gute Option wäre es, eine spöttische Bibliothek zu benutzen, die sich mit Mocks und Fälschungen beschäftigt, weil ich meine eigenen erschaffen wollte und immer viel Zeit damit verschwendet habe, Fälschungen oder Mocks zu erzeugen, bis ich diese Bibliothek erschaffen habe für dich. Probieren Sie FakeXrmEasy
ausTags und Links c# unit-testing dynamics-crm-2011