Prova 0.3.0
dotnet add package Prova --version 0.3.0
NuGet\Install-Package Prova -Version 0.3.0
<PackageReference Include="Prova" Version="0.3.0" />
<PackageVersion Include="Prova" Version="0.3.0" />
<PackageReference Include="Prova" />
paket add Prova --version 0.3.0
#r "nuget: Prova, 0.3.0"
#:package Prova@0.3.0
#addin nuget:?package=Prova&version=0.3.0
#tool nuget:?package=Prova&version=0.3.0
Prova πΈπͺ
Prova is a high-performance, Native AOT-compatible test runner for .NET. Use the xUnit syntax you already know, but with zero runtime reflection and instant startup.
Why Prova?
1. Zero Migration Cost
Your tests remain exactly the same. Prova supports standard xUnit attributes ([Fact], [Theory], [InlineData], Assert). You only change the runner.
2. Native Performance
Tests are discovered at compile-time using Source Generators and can be compiled to Native AOT. This eliminates runtime discovery costs and enables instant startup, making it ideal for high-frequency "inner loop" development or containerized CI environments.
3. Safe Parallelism
Tests run in parallel by default (Task.WhenAll), utilizing all available cores.
Quick Start
1. Install Code
dotnet add package Prova
2. Write Tests (Standard xUnit Syntax)
using Prova; // or 'using Xunit;' (Prova aliases this for compatibility)
public class CalculatorTests
{
[Fact]
public void Add_ReturnsSum()
{
Assert.Equal(4, 2 + 2);
}
[Theory]
[InlineData(10, 2, 5)]
[InlineData(20, 4, 5)]
public void Divide_ReturnsQuotient(int a, int b, int expected)
{
Assert.Equal(expected, a / b);
}
}
3. Run
dotnet run
Microsoft Testing Platform (MTP) Support
Prova integrates with the Microsoft Testing Platform. This enables support for dotnet test, TRX reporting, and code coverage without sacrificing AOT compatibility.
To enable dotnet test support:
Add a
global.jsonto your solution root:{ "test": { "runner": "Microsoft.Testing.Platform" } }Run with standard tooling:
dotnet test --coverage --report-trx
Advanced Features
While Prova is a drop-in replacement, it adds enterprise-grade features for strictly governed codebases.
Explicit Concurrency
Prevent thread pool starvation in massive test suites by bounding parallelism.
[Parallel(max: 4)] // Limits concurrency for this class
public class DatabaseTests { ... }
Allocation Governance
Enforce zero-allocation policies or strict memory budgets for critical paths.
[Fact]
[MaxAlloc(0)] // Fails if the test allocates any memory on the heap
public void HotPath_ShouldNotAllocate() { ... }
Flakiness Management
[Fact]
[Retry(3)] // Automatically retry flaky network tests
public void IntegrationTest() { ... }
Focused Execution
Run only the specific test you are debugging (similar to .only in Jest).
[Fact]
[Focus] // Prova will ONLY generate and run this test
public void DebuggingThisRightNow() { ... }
Contributing
We welcome issues and pull requests. Please see CONTRIBUTING.md for details.
See it in Action
Prova produces clean, hierarchical output that is easy to parse visually.
License
MIT
| 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
- Microsoft.Testing.Extensions.CodeCoverage (>= 18.3.2)
- Microsoft.Testing.Extensions.TrxReport (>= 2.0.2)
- Microsoft.Testing.Extensions.TrxReport.Abstractions (>= 2.0.2)
- Microsoft.Testing.Platform (>= 2.0.2)
- Microsoft.Testing.Platform.MSBuild (>= 2.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.