d48cda4081
CI / Test (ubuntu-latest, Node 18.x, bun) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, npm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, pnpm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, yarn) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 20.x, bun) (push) Failing after 17m13s
CI / Test (ubuntu-latest, Node 20.x, npm) (push) Failing after 18m42s
CI / Test (ubuntu-latest, Node 20.x, pnpm) (push) Failing after 15m0s
CI / Test (ubuntu-latest, Node 20.x, yarn) (push) Failing after 49m44s
CI / Test (ubuntu-latest, Node 22.x, bun) (push) Failing after 51m55s
CI / Test (ubuntu-latest, Node 22.x, pnpm) (push) Failing after 21m57s
CI / Test (ubuntu-latest, Node 22.x, npm) (push) Failing after 37m39s
CI / Test (ubuntu-latest, Node 22.x, yarn) (push) Failing after 34m7s
CI / Validate Components (push) Failing after 37m15s
CI / Python Tests (push) Failing after 10m1s
CI / Security Scan (push) Failing after 10m1s
CI / Lint (push) Failing after 17m12s
CI / Coverage (push) Failing after 20m19s
CI / Test (macos-latest, Node 18.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, yarn) (push) Has been cancelled
47 lines
1.1 KiB
Markdown
47 lines
1.1 KiB
Markdown
---
|
|
paths:
|
|
- "**/*.cs"
|
|
- "**/*.csx"
|
|
- "**/*.csproj"
|
|
---
|
|
# C# Testing
|
|
|
|
> This file extends [common/testing.md](../common/testing.md) with C#-specific content.
|
|
|
|
## Test Framework
|
|
|
|
- Prefer **xUnit** for unit and integration tests
|
|
- Use **FluentAssertions** for readable assertions
|
|
- Use **Moq** or **NSubstitute** for mocking dependencies
|
|
- Use **Testcontainers** when integration tests need real infrastructure
|
|
|
|
## Test Organization
|
|
|
|
- Mirror `src/` structure under `tests/`
|
|
- Separate unit, integration, and end-to-end coverage clearly
|
|
- Name tests by behavior, not implementation details
|
|
|
|
```csharp
|
|
public sealed class OrderServiceTests
|
|
{
|
|
[Fact]
|
|
public async Task FindByIdAsync_ReturnsOrder_WhenOrderExists()
|
|
{
|
|
// Arrange
|
|
// Act
|
|
// Assert
|
|
}
|
|
}
|
|
```
|
|
|
|
## ASP.NET Core Integration Tests
|
|
|
|
- Use `WebApplicationFactory<TEntryPoint>` for API integration coverage
|
|
- Test auth, validation, and serialization through HTTP, not by bypassing middleware
|
|
|
|
## Coverage
|
|
|
|
- Target 80%+ line coverage
|
|
- Focus coverage on domain logic, validation, auth, and failure paths
|
|
- Run `dotnet test` in CI with coverage collection enabled where available
|