Testprojekt LehrerApp.Tests anlegen (13.1.1)

Neues xUnit-Projekt für die Core-Schicht, analog zu LehrerApp.Data.Tests.
Noch ohne Testfälle.
This commit is contained in:
2026-08-13 10:34:41 +02:00
parent 4ab82c6bbe
commit a8b8a40b52
3 changed files with 109 additions and 21 deletions
+18
View File
@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\LehrerApp.Core\LehrerApp.Core.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xunit" />
<PackageReference Include="xunit.runner.visualstudio">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
+88 -19
View File
@@ -1,4 +1,4 @@
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LehrerApp.Core", "LehrerApp.Core\LehrerApp.Core.csproj", "{A1000001-0000-0000-0000-000000000001}"
EndProject
@@ -12,23 +12,92 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LehrerApp.Desktop", "Lehrer
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LehrerApp.Data.Tests", "LehrerApp.Data.Tests\LehrerApp.Data.Tests.csproj", "{A1000006-0000-0000-0000-000000000006}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LehrerApp.Tests", "LehrerApp.Tests\LehrerApp.Tests.csproj", "{4A5AC233-5976-44CD-B5F7-6562B096BA47}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A1000001-0000-0000-0000-000000000001}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000001-0000-0000-0000-000000000001}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000002-0000-0000-0000-000000000002}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000002-0000-0000-0000-000000000002}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000003-0000-0000-0000-000000000003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000003-0000-0000-0000-000000000003}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000004-0000-0000-0000-000000000004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000004-0000-0000-0000-000000000004}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000005-0000-0000-0000-000000000005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000005-0000-0000-0000-000000000005}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000006-0000-0000-0000-000000000006}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000006-0000-0000-0000-000000000006}.Debug|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A1000001-0000-0000-0000-000000000001}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000001-0000-0000-0000-000000000001}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000001-0000-0000-0000-000000000001}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1000001-0000-0000-0000-000000000001}.Debug|x64.Build.0 = Debug|Any CPU
{A1000001-0000-0000-0000-000000000001}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1000001-0000-0000-0000-000000000001}.Debug|x86.Build.0 = Debug|Any CPU
{A1000001-0000-0000-0000-000000000001}.Release|x64.ActiveCfg = Release|Any CPU
{A1000001-0000-0000-0000-000000000001}.Release|x64.Build.0 = Release|Any CPU
{A1000001-0000-0000-0000-000000000001}.Release|x86.ActiveCfg = Release|Any CPU
{A1000001-0000-0000-0000-000000000001}.Release|x86.Build.0 = Release|Any CPU
{A1000002-0000-0000-0000-000000000002}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000002-0000-0000-0000-000000000002}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000002-0000-0000-0000-000000000002}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1000002-0000-0000-0000-000000000002}.Debug|x64.Build.0 = Debug|Any CPU
{A1000002-0000-0000-0000-000000000002}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1000002-0000-0000-0000-000000000002}.Debug|x86.Build.0 = Debug|Any CPU
{A1000002-0000-0000-0000-000000000002}.Release|x64.ActiveCfg = Release|Any CPU
{A1000002-0000-0000-0000-000000000002}.Release|x64.Build.0 = Release|Any CPU
{A1000002-0000-0000-0000-000000000002}.Release|x86.ActiveCfg = Release|Any CPU
{A1000002-0000-0000-0000-000000000002}.Release|x86.Build.0 = Release|Any CPU
{A1000003-0000-0000-0000-000000000003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000003-0000-0000-0000-000000000003}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000003-0000-0000-0000-000000000003}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1000003-0000-0000-0000-000000000003}.Debug|x64.Build.0 = Debug|Any CPU
{A1000003-0000-0000-0000-000000000003}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1000003-0000-0000-0000-000000000003}.Debug|x86.Build.0 = Debug|Any CPU
{A1000003-0000-0000-0000-000000000003}.Release|x64.ActiveCfg = Release|Any CPU
{A1000003-0000-0000-0000-000000000003}.Release|x64.Build.0 = Release|Any CPU
{A1000003-0000-0000-0000-000000000003}.Release|x86.ActiveCfg = Release|Any CPU
{A1000003-0000-0000-0000-000000000003}.Release|x86.Build.0 = Release|Any CPU
{A1000004-0000-0000-0000-000000000004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000004-0000-0000-0000-000000000004}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000004-0000-0000-0000-000000000004}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1000004-0000-0000-0000-000000000004}.Debug|x64.Build.0 = Debug|Any CPU
{A1000004-0000-0000-0000-000000000004}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1000004-0000-0000-0000-000000000004}.Debug|x86.Build.0 = Debug|Any CPU
{A1000004-0000-0000-0000-000000000004}.Release|x64.ActiveCfg = Release|Any CPU
{A1000004-0000-0000-0000-000000000004}.Release|x64.Build.0 = Release|Any CPU
{A1000004-0000-0000-0000-000000000004}.Release|x86.ActiveCfg = Release|Any CPU
{A1000004-0000-0000-0000-000000000004}.Release|x86.Build.0 = Release|Any CPU
{A1000005-0000-0000-0000-000000000005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000005-0000-0000-0000-000000000005}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000005-0000-0000-0000-000000000005}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1000005-0000-0000-0000-000000000005}.Debug|x64.Build.0 = Debug|Any CPU
{A1000005-0000-0000-0000-000000000005}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1000005-0000-0000-0000-000000000005}.Debug|x86.Build.0 = Debug|Any CPU
{A1000005-0000-0000-0000-000000000005}.Release|x64.ActiveCfg = Release|Any CPU
{A1000005-0000-0000-0000-000000000005}.Release|x64.Build.0 = Release|Any CPU
{A1000005-0000-0000-0000-000000000005}.Release|x86.ActiveCfg = Release|Any CPU
{A1000005-0000-0000-0000-000000000005}.Release|x86.Build.0 = Release|Any CPU
{A1000006-0000-0000-0000-000000000006}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1000006-0000-0000-0000-000000000006}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1000006-0000-0000-0000-000000000006}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1000006-0000-0000-0000-000000000006}.Debug|x64.Build.0 = Debug|Any CPU
{A1000006-0000-0000-0000-000000000006}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1000006-0000-0000-0000-000000000006}.Debug|x86.Build.0 = Debug|Any CPU
{A1000006-0000-0000-0000-000000000006}.Release|x64.ActiveCfg = Release|Any CPU
{A1000006-0000-0000-0000-000000000006}.Release|x64.Build.0 = Release|Any CPU
{A1000006-0000-0000-0000-000000000006}.Release|x86.ActiveCfg = Release|Any CPU
{A1000006-0000-0000-0000-000000000006}.Release|x86.Build.0 = Release|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Debug|x64.ActiveCfg = Debug|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Debug|x64.Build.0 = Debug|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Debug|x86.ActiveCfg = Debug|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Debug|x86.Build.0 = Debug|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Release|Any CPU.Build.0 = Release|Any CPU
{4A5AC233-5976-44CD-B5F7-6562B096BA47}.Release|x64.ActiveCfg = Release|Any CPU
{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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
+3 -2
View File
@@ -449,8 +449,9 @@ Fächer- und Kompetenzverwaltung existiert bereits in
## 13. Technische Basis
### 13.1 Tests
- [ ] **13.1.1** Testprojekt `LehrerApp.Tests` anlegen (xunit-Pakete sind in
[Directory.Packages.props](Directory.Packages.props) bereits gepflegt, Projekt fehlt).
- [x] **13.1.1** Testprojekt `LehrerApp.Tests` angelegt (referenziert `LehrerApp.Core`, analog zu
[LehrerApp.Data.Tests](LehrerApp.Data.Tests/LehrerApp.Data.Tests.csproj) für die Datenschicht).
Noch ohne Testfälle — folgt mit 13.1.2ff.
- [ ] **13.1.2** Unit-Tests für `GradingService` (Notenschlüssel-Grenzfälle, gewichteter Schnitt).
- [ ] **13.1.3** Unit-Tests für `SchoolYearService` (Jahreswechsel, Halbjahresgrenze).
- [ ] **13.1.4** Repository-Tests gegen eine In-Memory-LiteDB.