Erhöhe die Testabdeckung für ETL-Services und füge neue Tests für den…#19
Hidden character warning
Conversation
… Übersetzungsbatchkontext, den Confluence-Renderer, den URL-Builder und den Bildoptimierer hinzu. Setze die Coverage-Schwelle auf 65 und aktualisiere die CI-Konfiguration für die Coverage-Berichterstattung.
There was a problem hiding this comment.
Pull request overview
Diese PR erhöht die Testabdeckung rund um zentrale ETL-/Rendering-/Service-Komponenten und passt die CI-Pipeline an, um Code-Coverage zu erzeugen und per Threshold zu erzwingen.
Changes:
- Neue Unit-Tests für
TranslationBatchContext,ConfluenceRenderer,ConfluenceUrlBuilderundImageOptimizer. - Anpassung der Coverlet-Threshold-Konfiguration im Testprojekt.
- CI-Workflow-Update: Coverage-Erzeugung via Coverlet MSBuild + Upload der Coverage-Artefakte/Codecov-Upload.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/ConfluenceSynkMD.Tests/Services/ImageOptimizerTests.cs | Neue Tests für Bildoptimierung (Disabled/Nonexistent/Resize/Load-Failure). |
| tests/ConfluenceSynkMD.Tests/Services/ConfluenceUrlBuilderTests.cs | Neue Tests für URL-Strategie/Encoding/Fallbacks. |
| tests/ConfluenceSynkMD.Tests/Markdig/ConfluenceRendererTests.cs | Neue Tests für Default-State und registrierte Renderer. |
| tests/ConfluenceSynkMD.Tests/ETL/Core/TranslationBatchContextTests.cs | Neue Tests für Initialzustand und Mutierbarkeit des Batch-Kontexts. |
| tests/ConfluenceSynkMD.Tests/ConfluenceSynkMD.Tests.csproj | Threshold-Anhebung und ThresholdStat=total. |
| .github/workflows/ci.yml | dotnet test mit Coverlet MSBuild, Threshold-Enforcement, Artifact-/Codecov-Upload. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <Threshold>65</Threshold> | ||
| <ThresholdStat>total</ThresholdStat> |
There was a problem hiding this comment.
PR-Beschreibung erwähnt eine Coverage-Schwelle von 70–80, hier wird jedoch 65 gesetzt. Bitte entweder die PR-Beschreibung anpassen oder den Threshold konsistent auf den intendierten Wert erhöhen (und CI/Tests entsprechend).
.github/workflows/ci.yml
Outdated
| - name: Test with coverage (enforced threshold) | ||
| run: | | ||
| dotnet test ConfluenceSynkMD.slnx \ | ||
| --no-build \ | ||
| --configuration Release \ | ||
| /p:CollectCoverage=true \ | ||
| /p:CoverletOutput=./TestResults/Coverage/ \ | ||
| /p:CoverletOutputFormat="cobertura,json" \ | ||
| /p:ThresholdType=line \ | ||
| /p:ThresholdStat=total \ | ||
| /p:Threshold=65 |
There was a problem hiding this comment.
Die Threshold-Parameter (ThresholdType/Stat/Value) werden sowohl im Testprojekt (.csproj) als auch hier in der CI gesetzt. Das ist fehleranfällig (Drift bei zukünftigen Änderungen). Besser: Thresholds nur an einer Stelle definieren (z.B. im .csproj/Directory.Build.props) und in der CI nur CollectCoverage/Output/Format konfigurieren.
| - name: Test with coverage (enforced threshold) | |
| run: | | |
| dotnet test ConfluenceSynkMD.slnx \ | |
| --no-build \ | |
| --configuration Release \ | |
| /p:CollectCoverage=true \ | |
| /p:CoverletOutput=./TestResults/Coverage/ \ | |
| /p:CoverletOutputFormat="cobertura,json" \ | |
| /p:ThresholdType=line \ | |
| /p:ThresholdStat=total \ | |
| /p:Threshold=65 | |
| - name: Test with coverage | |
| run: | | |
| dotnet test ConfluenceSynkMD.slnx \ | |
| --no-build \ | |
| --configuration Release \ | |
| /p:CollectCoverage=true \ | |
| /p:CoverletOutput=./TestResults/Coverage/ \ | |
| /p:CoverletOutputFormat="cobertura,json" |
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "HeadingRenderer"); | ||
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "CodeBlockRenderer"); | ||
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "LinkInlineRenderer"); | ||
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "MathInlineRenderer"); | ||
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "MathBlockRenderer"); |
There was a problem hiding this comment.
Die Assertions prüfen Renderer über GetType().Name == "…", was bei Umbenennungen/Refactors unnötig fragil ist. Da die Renderer-Typen im Projekt verfügbar sind, besser direkt auf die Typen prüfen (z.B. r is HeadingRenderer) statt auf String-Namen.
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "HeadingRenderer"); | |
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "CodeBlockRenderer"); | |
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "LinkInlineRenderer"); | |
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "MathInlineRenderer"); | |
| sut.ObjectRenderers.Should().Contain(r => r.GetType().Name == "MathBlockRenderer"); | |
| sut.ObjectRenderers.Should().Contain(r => r is HeadingRenderer); | |
| sut.ObjectRenderers.Should().Contain(r => r is CodeBlockRenderer); | |
| sut.ObjectRenderers.Should().Contain(r => r is LinkInlineRenderer); | |
| sut.ObjectRenderers.Should().Contain(r => r is MathInlineRenderer); | |
| sut.ObjectRenderers.Should().Contain(r => r is MathBlockRenderer); |
…für verschiedene Renderer hinzu, einschließlich Fußnoten-, HTML-, Listen-, Mathematik- und Absatz-Renderer. Aktualisiere die CI-Konfiguration entsprechend.
… CI-Konfiguration entsprechend. Füge zusätzliche Dateien zur Ausschlussliste hinzu.
… und passe die Upload-Pfade an.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
… Übersetzungsbatchkontext, den Confluence-Renderer, den URL-Builder und den Bildoptimierer hinzu. Setze die Coverage-Schwelle auf 70-80 und aktualisiere die CI-Konfiguration für die Coverage-Berichterstattung.
Summary
Describe what this PR changes and why.
Related Issues
Type of change
Validation
dotnet build ConfluenceSynkMD.slnx --configuration Releasedotnet test ConfluenceSynkMD.slnx --configuration Release --no-buildBreaking changes
Checklist