πŸ§ͺ Unit Testing met FakeXrmEasy

Framework voor het testen van Dataverse plugins en business logic in isolatie, zonder afhankelijkheid van een echte omgeving.

← Terug naar Build & Test

Introductie

FakeXrmEasy is een open source testframework dat speciaal is ontwikkeld voor het testen van Microsoft Dataverse (Dynamics 365) oplossingen.

Het framework simuleert de Dataverse omgeving in-memory, waardoor je plugins en business logic kunt testen zonder verbinding met een echte omgeving.

πŸ‘‰ Hierdoor kunnen tests snel, betrouwbaar en volledig geautomatiseerd uitgevoerd worden.


Doel van Unit Testing met FakeXrmEasy

  • Valideren van business logic in isolatie
  • Testen van plugins zonder deployment
  • Detecteren van fouten in een vroeg stadium
  • Verhogen van codekwaliteit en betrouwbaarheid
  • Ondersteunen van Test Driven Development (TDD)

πŸ‘‰ Unit tests zorgen voor snelle feedback tijdens development.


Wat is FakeXrmEasy

  • Testframework specifiek voor Dataverse / Dynamics 365
  • Simuleert IOrganizationService
  • Werkt met een in-memory database
  • Ondersteunt queries zoals FetchXML en LINQ
  • Integreert met xUnit, MSTest en NUnit

πŸ‘‰ FakeXrmEasy simuleert een volledige Dataverse context in geheugen en maakt het mogelijk om data en gedrag te testen zonder echte backend. ens development van plugins

  • Bij implementatie van business logic
  • Als onderdeel van CI/CD pipelines
  • Voor regressiecontrole op code niveau
  • πŸ‘‰ Unit testing met FakeXrmEasy is een vast onderdeel van moderne DevOps practices.


    Wat wordt getest

    πŸ”Ή Dataverse / Plugins

    • Plugin business logic
    • Pre/Post event gedrag
    • Validaties en business rules
    • Wijzigingen op entities

    πŸ”Ή Business Logic

    • Berekeningen en beslissingen
    • Data mutaties
    • Service calls via IOrganizationService

    πŸ‘‰ Focus ligt op isolatie van logica, niet op integraties.


    Hoe werkt het (conceptueel)

    • Initialiseer testdata in memory
    • Voer plugin of logic uit
    • Controleer de gewijzigde state

    πŸ‘‰ FakeXrmEasy gebruikt een in-memory datastore om de state vΓ³Γ³r en na uitvoering te vergelijken. [1](https://dynamicsvalue.github.io/fake-xrm-easy-docs/quickstart/basics/)


    Aanpak (stap voor stap)

    πŸ”Ή 1. Testcontext opzetten

    • Initialiseer FakeXrmEasy context
    • Configureer testdata (entities)

    πŸ”Ή 2. Testdata voorbereiden

    • Maak benodigde records aan
    • Simuleer relaties en dependencies

    πŸ”Ή 3. Code uitvoeren

    • Roep plugin of business logic aan

    πŸ”Ή 4. Resultaten valideren

    • Controleer wijzigingen in data
    • Verifieer business rules
    • Gebruik assertions

    Checklist Unit Testing (FakeXrmEasy)

    πŸ”Ή Setup

    • Testcontext opgezet
    • FakeXrmEasy correct geconfigureerd
    • Testdata aanwezig

    πŸ”Ή Testcases

    • Kritische scenario’s getest
    • Edge cases meegenomen
    • Verwachte uitkomsten vastgelegd

    πŸ”Ή Validatie

    • Data correct aangepast
    • Business regels toegepast
    • Geen onverwachte side-effects

    πŸ”Ή Kwaliteit

    • Testen zijn herhaalbaar
    • Testen draaien snel
    • Code coverage voldoende

    Best practices

    • Scheid business logic van plugin code (SOLID principes)
    • Test logica onafhankelijk van Dataverse
    • Houd unit tests klein en specifiek
    • Automatiseer tests in CI/CD pipelines
    • Gebruik FakeXrmEasy voor snelle feedbackloops

    Relatie met teststrategie

    • Onderdeel van Unit Testing β†’ valideert individuele componenten
    • Wordt gebruikt vΓ³Γ³r integratie en system tests
    • Ondersteunt Test Driven Development (TDD)
    • Vormt de basis voor hogere testniveaus

    πŸ‘‰ Unit testing met FakeXrmEasy zorgt voor snelle feedback tijdens development en verhoogt de kwaliteit van de volledige testketen.


    Samenvatting

    Unit testing met FakeXrmEasy maakt het mogelijk om Dataverse plugins en business logic snel en betrouwbaar te testen zonder afhankelijkheid van een echte omgeving.

    πŸ‘‰ Het is een essentieel onderdeel van moderne Power Platform development en helpt bij het bouwen van robuuste en onderhoudbare oplossingen.