XrmMockup in Aktion bei der Power Platform Community Frankfurt

Geschrieben von Roy Carlitscheck am 19.05.2025

Letzte Woche war es wieder soweit: Die Power Platform Community Frankfurt versammelte sich zum zweiten mal. Bei unserem ersten Besuch ging es um ALM und CustomPages. Dieses mal durfte ich einen Vortrag halten, in dem ich XrmMockup vorgestellt habe - ein leistungsfähiges In-Memory-Testframework für Dynamics 365 Customer Engagement, bzw. Dataverse, und eine echte Alternative zu FakeXrmEasy.

Organisiert wird das Power Platform Community Frankfurt Treffen von Benedikt Bergmann und Felix Mora

In meinem Vortrag ging es um automatisierte Tests in Dynamics 365, warum sie unverzichtbar sind und wie XrmMockup hilft realitätsnahe Tests effizient umzusetzen. Wer sich mit Plugins, Workflows oder CRM-spezifischer Businesslogik beschäftigt, sollte XrmMockup kennen. In meinem Vortrag ging es um automatisierte Tests in Dynamics 365 Customer Engagement, warum sie unverzichtbar sind und wie XrmMockup hilft realitätsnahe Tests effizient umzusetzen. Wer sich mit Plugins, Workflows oder Dynamics 365 Customer Engagement spezifischer Businesslogik beschäftigt, sollte XrmMockup kennen.

Warum automatisierte Tests?

Automatisierte Tests sind kein Selbstzweck. Sie helfen uns, das Verhalten unserer Software zu überprüfen. Funktioniert mein Plugin noch, wenn ich an anderer Stelle etwas ändere? Bricht mir erwartetes Verhalten des Systems weg, weil ich etwas neues hinzufüge oder Teile entferne? Gerade in komplexen Dynamics 365 Projekten verlieren wir ohne Tests schnell den Teile entferne? Gerade in komplexen Dataverse-Projekten verlieren wir ohne Tests schnell den Überblick. Automatisierte Tests sind hier das Sicherheitsnetz. In Kombination mit CI/CD Pipelines sorgen sie dafür, dass wir jederzeit wissen: was heute funktioniert, wird morgen nicht plötzlich brechen.

Was ist XrmMockup?

XrmMockup ist ein Open-Source-Testframework, das Dynamics 365 Customer Engagement Logik im Speicher simuliert. Es verzichtet komplett auf eine echte Dataverse-Instanz und bildet dennoch die wichtigsten Bestandteile einer CE-Umgebung ab:

  • Komplette Plugin-Pipeline inkl. Images, SharedVariables, Depth etc.
  • Support für Workflows und Custom Workflow Activities
  • Sicherheitskontext (Benutzer, Rollen, Teams, Business Units)
  • Simulation von zeitbasierten Prozessen durch Zeitsprünge
  • Snapshots: Einmal gesetzten Zustand speichern und zurücksetzen
  • Unterstützung für CRUD, SetState, Associate, Execute uvm.

Das Framework eignet sich zwar für klassische Unit Tests, ist aber darauf ausgelegt komplette Prozesse zu simulieren und zu testen.

Live Demo: Plugin testen mit XrmMockup

In der Demo habe ich gezeigt, wie man in wenigen Schritten in einem bereits bestehenden Plugin Projekt, für Microsoft Dynamics 365 Customer Engagement, XrmMockup einbindet und konfiguriert. Dabei habe ich die wichtigsten Schritte erklärt und live demonstriert: Projekt, für Dynamics 365 Customer Engagement, XrmMockup einbindet und konfiguriert. Dabei habe ich die wichtigsten Schritte erklärt und live demonstriert:

  • Testprojekt anlegen und XrmMockup per NuGet einbinden
  • MetadataGenerator konfigurieren, um Metadaten lokal zu laden
  • Test schreiben, der ein Plugin mit echten Daten testet
  • Debuggen direkt im Testlauf, ganz ohne Dynamics 365 Customer Engagement

Mit Hilfe des MetadataGenerators können die Metadaten aus einer bestehenden Dataverse-Instnaz geladen werden. Dabei werden Sicherheitsrollen, Workflows, Pluginsteps und alles wichtige an Metadaten rund um Tabellen, Spalten und Einstellungen lokal in einer XML-Datei gespeichert. Der MetadataGenerator ist Teil von XrmMockup und wird beim Hinzufügen des NuGet Pakets mitgeliefert. So konfiguert man den MetadataGenerator:

Beispiel Konfiguration für den MetadataGenerator

Erwähnenswert ist, dass man in der Konfiguration auch angeben kann, dass nur bestimmte Tabellen oder Tabellen aus bestimmten Lösungen herangezogen werden.

Die Einrichtung ist schnell gemacht, der Nutzen immens. Sobald alles steht, lassen sich auch komplexe Anforderungen sehr effizient testen. Mit diesen wenigen Zeilen Code ist XrmMockup initialisiert und Einsatzbereit.

XrmMock mit NUnit Initialisieren

In der Methode InitializeServices wird XrmMockup mit den Metadaten des Dynamics 365 Customer Engagement Systems initialisiert. Das ist wichtig, damit XrmMockup die Metadaten des Systems kennt und alle Abfragen korrekt bearbeiten kann. Mit der Property BasePluginTypes wird der Basistyp der Plugins angegeben, die getestet werden soll. XrmMockup kann dann alle Plugins, die von diesem Typ erben, automatisch erkennen und testen. Dabei werden die PluginSteps die in den Metadaten definiert sind berücksichtig. Plugins werden also unter den gleichen Bedingungen ausgeführt wie es in einer echten Dynamics 365 Customer Engagement Instanz der Fall wäre.

Anschließend kann man mit dem Schreiben der Tests beginnen. Die Tests sollten so geschrieben werden, dass sie die Geschäftslogik und nicht die Implementierung überprüfen. Das bedeutet, dass die Tests nicht auf die Details der Implementierung des Plugins eingehen, sondern nur auf die Ergebnisse, die das Plugin zurückgibt, bzw. im Dynamics 365 Customer Engagement hinterlässt. Das hat den Vorteil, dass die Tests auch dann noch gültig sind, wenn sich die Implementierung des Plugins ändert.

Beispiel für einen Test der ein Account anlegt und dabei Plugin-Logik auslöst

Als kleiner Bonus der durch XrmMockup möglich ist: Debuggen direkt im Testlauf. Das ist insbesondere für die Entwicklung von Plugins sehr hilfreich und spart viel Zeit.

Bonus: Reqnroll für lesbare BDD-Tests

Als Bonus habe ich noch Reqnroll vorgestellt - ein modernes BDD-Framework für .NET, das auf SpecFlow aufbaut. In Kombination mit XrmMockup lassen sich Tests im Given-When-Then-Format schreiben, verständlich für Entwickler:innen und Fachabteilungen zugleich. Neben Englisch stehen eine Vielzahl an anderern Sprachen zur Verfügung, darunter auch Deutsch. Testen Sie es doch selbst und versuchen Anhand folgendes Szenarios zu verstehen, welches Verhalten geprüft wird:

Beispiel für ein Reqnroll-Szenario wo es um die Vererbung von Dienstleistungen geht.

Wenn Sie das Szenario lesen, werden Sie feststellen, dass es sich hier um die Vererbung von Services bzw. Leistungen eines Vertrages an untergeordnete Firmen handelt. Damit wird aus einem technischen Unit Test ein leicht lesbares Akzeptanzszenario. Besonders spannend für Teams, in denen QA, Consulting und Entwicklung Hand in Hand arbeiten.

Fazit: Testbarkeit für Dynamics 365 Customer Engagement auf einem neuen Level

XrmMockup ist aus meiner Sicht das aktuell realistischste Tool für das Testen von Dynamics 365 Customer Engagement Logik ohne Umgebung. Es ist schnell, flexibel, kostenlos und bringt den Spaß zurück in die Testentwicklung. Wer seine Dynamics 365 Customer Engagement Lösungen zukunftssicher und wartbar entwickeln möchte, sollte sich das Framework unbedingt ansehen.

Bei Fragen oder Interesse an Teststrategien rund um Dynamics 365 Customer Engagement helfen wir gerne weiter. Sprecht uns an!

Nachricht senden