testinglisted
Install: claude install-skill lamuniercosta/dotnet-agent-harness
# Testing
Adapted from [codewithmukesh/dotnet-claude-kit](https://github.com/codewithmukesh/dotnet-claude-kit) (MIT).
## Map to the repo's stack first (read first)
The examples below use EF Core + Postgres illustratively. **Detect what the repo actually uses before writing a line** — run `/convention-learner`, or read one existing test in each test project. Fill this table in for the repo at hand:
| Concern | What to look for | Common choices |
|---|---|---|
| Test projects | the `tests/` layout and what each project is for | unit (+ `[Trait("Category","Property")]` for FsCheck), integration, acceptance |
| Assertions | the dominant style in existing tests | xUnit `Assert`, FluentAssertions, Shouldly |
| Mocks | the substitution library already referenced | NSubstitute, Moq, FakeItEasy |
| Real DB in tests | how integration tests get a database | Testcontainers (preferred), a shared instance (avoid) |
| External HTTP | how outbound calls are faked | WireMock.NET, a stub `HttpMessageHandler` |
| Integration host | how the app is booted in-process | `WebApplicationFactory<Program>` |
| Time | how `TimeProvider` is controlled | `FakeTimeProvider` (`Microsoft.Extensions.TimeProvider.Testing`) |
**Match the existing choice — do not introduce a second one.** Two assertion libraries or two mocking libraries in one suite is a convention failure the `code-review` Standards axis will flag, and it is the most common way generated tests read as foreign.
Two rules that hold regardle