Unit Tests

Prof. Dr. Robin Nunkesser

Agentisches Beispiel: Unit Testing

Verwendete Instructions

  • .github/copilot-instructions.md
  • .github/instructions/artifacts.instructions.md
  • .github/instructions/artifacts-consumers-education.instructions.md
  • .github/instructions/slides.instructions.md

Exakter Prompt

Erstelle ein agent-generated example für Unit Testing (MAUI, fortgeschrittene Studierende).
Feature-Scope: minimal. Wende MVVM mit CommunityToolkit.Mvvm und Unit Tests mit MSTest an.
Entscheide anhand der Architektur-Entscheidungstabelle aus den Instructions, welche weiteren Muster (Core-Projekt, Architekturschichten) das Konzept rechtfertigt — verwende sie, wenn dieselbe Komplexität in einem produktiven Einsatz diese Strukturen erfordern würde.
Lies zuerst die Instructions, ermittle den Foliensatz, dokumentiere Instructions + Prompt dort, vergleiche mit manuellem Beispiel, verifiziere MacCatalyst Build mit workaround zum mismatch des workloads mit der xcode version.

Architekturentscheidung (gemäß Tabelle)

Aspekt Entscheidung Begründung
Feature-Scope Minimal (Währungsumrechnung) Fokus bleibt auf Testbarkeit
MVVM Ja UI-Bindings + Commands sind didaktisch zentral
Unit Tests Ja (MSTest) Hauptziel des Beispiels
Core-Projekt Ja Für produktive Testbarkeit der Domänenlogik sinnvoll
Architekturschichten Teilweise Core + ViewModels + MAUI; keine Infra-Schicht nötig

Ergebnis (agent-generated)

  • Bestehendes Beispiel auf MVVM umgestellt (MoneyExample.ViewModels)
  • CommunityToolkit.Mvvm für [ObservableProperty] und [RelayCommand]
  • UI-Code-Behind enthält nur Lifecycle-Hooks
  • Tests von NUnit auf MSTest migriert
  • 10 MSTest-Tests (Core + ViewModel)
  • MacCatalyst-Workaround gesetzt (ValidateXcodeVersion=false)

Vergleich: manuell vs. agent-generated

Kriterium Manuelles Beispiel Agent-generated Beispiel
Testframework NUnit MSTest
MVVM nein ja
Business-Logik in UI teilweise nein
Testabdeckung Core-Klassen Core + ViewModel
Komposition via DI nein ja
MacCatalyst-Workaround nein ja

Fazit: Das agent-generated Beispiel ist bei gleicher Featureschärfe didaktisch vollständiger und produktionsnäher für fortgeschrittene Studierende.

Live-Coding

Repository

Verifikation

  • Tests: dotnet test MoneyExample.Tests/MoneyExample.Tests.csproj → 10/10 erfolgreich
  • MacCatalyst-Build: dotnet build MoneyExample/MoneyExample.csproj -f net10.0-maccatalyst -p:ValidateXcodeVersion=false → erfolgreich