elsa-core/docs/codebase/TESTING.md

48 lines
2 KiB
Markdown
Raw Permalink Normal View History

# Testing Patterns
## Test Stack and Commands
- Framework: xUnit 2.9.3.
- Assertion/mocking: xUnit assertions, NSubstitute 5.3.0, ASP.NET Core TestServer, SQLite in-memory EF Core.
```bash
dotnet test Elsa.sln
dotnet test test/unit/Elsa.ExternalAuthentication.UnitTests/Elsa.ExternalAuthentication.UnitTests.csproj
dotnet test test/integration/Elsa.ExternalAuthentication.IntegrationTests/Elsa.ExternalAuthentication.IntegrationTests.csproj
```
## Test Layout
- Test projects are separated under `test/unit`, `test/integration`, `test/component`, and `test/performance`.
- Test files use `*Tests.cs`; xUnit setup uses constructors or `IAsyncLifetime`.
- Shared helpers live under `src/common/Elsa.Testing.Shared*`.
## Test Scope Matrix
| Scope | Covered | Typical target | Notes |
|---|---|---|---|
| Unit | Yes | Validators, in-memory stores, isolated services | Fast and dependency-light |
| Integration | Yes | Broker flow, REST endpoints, SQLite persistence | Used for external-auth tracking regression |
| Component | Yes | Workflow runtime behavior | Not needed for this identity defect |
| E2E browser | `[TODO]` | Studio rendering | Studio repository is separate |
## Mocking and Isolation Strategy
- Prefer real in-memory provisioners and stores for state assertions.
- Substitute adapters, role providers, and notification senders at boundaries.
- SQLite `Data Source=:memory:` provides isolated durable-store tests.
## Coverage and Quality Signals
- Coverlet generates Cobertura, LCOV, and OpenCover output.
- Default project threshold is 10% total line coverage.
- Focused filtered runs may disable coverage; the full project run enforces the threshold.
## Evidence
- `test/Directory.Build.props`
- `test/integration/Elsa.ExternalAuthentication.IntegrationTests/Broker/BrokerSecurityTests.cs`
- `test/integration/Elsa.ExternalAuthentication.IntegrationTests/Persistence/ExternalAuthenticationPersistenceTests.cs`
- `test/integration/Elsa.ExternalAuthentication.IntegrationTests/Links/ExternalIdentityLinkTests.cs`