SoftwareExtravaganza.Whizbang.Testing
0.3.0-alpha.26
dotnet add package SoftwareExtravaganza.Whizbang.Testing --version 0.3.0-alpha.26
NuGet\Install-Package SoftwareExtravaganza.Whizbang.Testing -Version 0.3.0-alpha.26
<PackageReference Include="SoftwareExtravaganza.Whizbang.Testing" Version="0.3.0-alpha.26" />
<PackageVersion Include="SoftwareExtravaganza.Whizbang.Testing" Version="0.3.0-alpha.26" />
<PackageReference Include="SoftwareExtravaganza.Whizbang.Testing" />
paket add SoftwareExtravaganza.Whizbang.Testing --version 0.3.0-alpha.26
#r "nuget: SoftwareExtravaganza.Whizbang.Testing, 0.3.0-alpha.26"
#:package SoftwareExtravaganza.Whizbang.Testing@0.3.0-alpha.26
#addin nuget:?package=SoftwareExtravaganza.Whizbang.Testing&version=0.3.0-alpha.26&prerelease
#tool nuget:?package=SoftwareExtravaganza.Whizbang.Testing&version=0.3.0-alpha.26&prerelease
Whizbang
A comprehensive .NET library for building event-driven, CQRS, and event-sourced applications with zero reflection and AOT compatibility.
Version 0.1.0 - Foundation Release
This is the foundation release establishing all core components with in-memory implementations. The focus is on breadth over depth, ensuring every component exists and works together from day one.
Project Structure
whizbang/
├── src/
│ ├── Whizbang.Core/ # Core interfaces and types
│ ├── Whizbang.Generators/ # Source generators (future)
│ └── Whizbang.Testing/ # Testing utilities
└── tests/
├── Whizbang.Core.Tests/ # Unit tests
└── Whizbang.Documentation.Tests/ # Documentation example tests
Core Components (v0.1.0)
Receptors
Stateless message handlers that receive commands and produce events. Type-safe with flexible response types (single, tuple, array, Result<T>).
Dispatcher
Message routing and orchestration engine. Routes messages to appropriate handlers with context tracking (correlation/causation IDs).
Value Objects (Vogen)
Type-safe IDs using source-generation:
MessageId- Unique message identifierCorrelationId- Logical workflow identifierCausationId- Causal chain identifier
Technology Stack
- .NET 10.0 - Target framework (LTS)
- Vogen - Source-generated value objects
- TUnit 1.5+ - Modern source-generation test framework
- TUnit.Assertions - Native fluent assertions
- Rocks 9.3+ - Source-generation mocking for AOT compatibility
- Bogus - Test data generation
- EF Core 10 - Database access with compiled models
- Dapper - High-performance SQL queries
- PostgreSQL - Primary database with JsonB and UUIDv7 support
Getting Started
Build
dotnet build
Run Tests
dotnet test
Current Status
All tests are currently failing by design. This is TDD - tests define the behavior, implementation comes next.
Philosophy
- Zero Reflection - Everything via source generators
- AOT Compatible - Native AOT from day one
- Type Safe - Compile-time safety everywhere
- Test Driven - Comprehensive test coverage
Documentation
See the whizbang-lib.github.io repository for comprehensive documentation of all features and design decisions.
Release Workflow
Three-Phase Release Process
Whizbang uses a three-phase release process:
- Alpha - Internal testing and validation
- Beta - Limited public testing with early adopters
- GA - General availability for public use
Release Checklist
The complete release checklist is maintained in .github/RELEASE.md.
Using the /release Command
Claude Code can guide you through the release process:
/release alpha # Start alpha release
/release beta # Start beta release
/release ga # Start GA release
Manual Release Process
If not using Claude Code, follow these steps:
Alpha Release
- Follow all items in
.github/RELEASE.mdAlpha Phase section - Verify all exit criteria are met
- Tag version:
git tag -a v0.1.0-alpha.1 -m "Alpha 1" - Push tag:
git push origin v0.1.0-alpha.1 - GitHub Actions will automatically publish to NuGet
Beta Release
- Complete Alpha phase
- Address feedback from alpha testing
- Follow all items in
.github/RELEASE.mdBeta Phase section - Tag version:
git tag -a v0.1.0-beta.1 -m "Beta 1" - Push tag:
git push origin v0.1.0-beta.1
GA Release
- Complete Beta phase
- Address feedback from beta testing
- Follow all items in
.github/RELEASE.mdGA Phase section - Tag version:
git tag -a v0.1.0 -m "Release v0.1.0" - Push tag:
git push origin v0.1.0 - Announce to community
Version Numbering
See GitVersion section for automatic version calculation.
Next Steps
- ✅ Foundation skeleton (DONE)
- ⏳ Implement Receptors to pass tests
- ⏳ Implement Dispatcher to pass tests
- ⏳ Add source generators for handler discovery
- ⏳ Add remaining components (Perspectives, Lenses, etc.)
Contributing
This is v0.1.0 - the foundation. Follow the TDD approach:
- Tests define behavior (already written)
- Implement to make tests pass (green)
- Refactor for quality (refactor)
See CONTRIBUTING.md for full guidelines.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Bogus (>= 35.6.5)
- Npgsql (>= 10.0.1)
- SoftwareExtravaganza.Whizbang.Core (>= 0.3.0-alpha.26)
- Testcontainers.PostgreSql (>= 4.9.0)
- Testcontainers.RabbitMq (>= 4.9.0)
- TUnit (>= 1.5.70)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.3.0-alpha.26 | 34 | 1/31/2026 |