Testabdeckung Kapitel 13.1 (Tests, Fehlerbehandlung)
Vier neue xUnit-Testprojekte (LehrerApp.Tests, .Data.Tests, .Desktop.Tests, .Sync.Tests) mit zusammen 104 Tests: GradingService, SchoolYearService, Repositories gegen In-Memory-LiteDB, Mitarbeits-Aggregation (3.2), Zeugnisnotenberechnung (2.4) und ConflictResolver. Dabei zwei echte Fehler in der Sync-Schicht gefunden und behoben: - SyncEvent.EventId fehlte [BsonId], wodurch EventQueue.Acknowledge() nie etwas aus der Queue löschte. - ConflictResolver verglich Zeitstempel unterschiedlicher DateTimeKind direkt (LiteDB liefert Local statt Utc zurück), was die Gleichstand- Regel außerhalb von UTC+0 verfälschte. SchoolYearService.CurrentSchoolYear()/RecentSchoolYears() um ein optionales today-Argument erweitert, um den Schuljahreswechsel deterministisch zu testen; LiteDbContext um einen Stream-Konstruktor für In-Memory-Tests.
This commit is contained in:
@@ -14,6 +14,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LehrerApp.Data.Tests", "Leh
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LehrerApp.Tests", "LehrerApp.Tests\LehrerApp.Tests.csproj", "{4A5AC233-5976-44CD-B5F7-6562B096BA47}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LehrerApp.Desktop.Tests", "LehrerApp.Desktop.Tests\LehrerApp.Desktop.Tests.csproj", "{9A422EEC-6F1E-4510-91B4-F893B1B32445}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LehrerApp.Sync.Tests", "LehrerApp.Sync.Tests\LehrerApp.Sync.Tests.csproj", "{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -96,6 +100,30 @@ Global
|
||||
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Release|x64.Build.0 = Release|Any CPU
|
||||
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Release|x86.Build.0 = Release|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9A422EEC-6F1E-4510-91B4-F893B1B32445}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2E2B2FA3-B0C4-415D-913F-0A0432394EEC}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
Reference in New Issue
Block a user