xUnitV3LoadFramework 1.0.0.86
See the version list below for details.
dotnet add package xUnitV3LoadFramework --version 1.0.0.86
NuGet\Install-Package xUnitV3LoadFramework -Version 1.0.0.86
<PackageReference Include="xUnitV3LoadFramework" Version="1.0.0.86" />
<PackageVersion Include="xUnitV3LoadFramework" Version="1.0.0.86" />
<PackageReference Include="xUnitV3LoadFramework" />
paket add xUnitV3LoadFramework --version 1.0.0.86
#r "nuget: xUnitV3LoadFramework, 1.0.0.86"
#:package xUnitV3LoadFramework@1.0.0.86
#addin nuget:?package=xUnitV3LoadFramework&version=1.0.0.86
#tool nuget:?package=xUnitV3LoadFramework&version=1.0.0.86
🚀 xUnitV3LoadFramework
xUnitV3LoadFramework is a robust and user-friendly load testing framework built to seamlessly integrate with xUnit and powered by Akka.NET actors. It allows developers to efficiently define, execute, and analyze parallel load test scenarios, making load testing a natural part of your automated testing workflow.
🌟 Features
Hybrid Execution Model
- Channel-based Workers: Fixed worker pools with pre-allocated channels for consistent performance
- Task-based Workers: Dynamic task creation for flexible workload handling
- Automatic Optimization: Framework automatically selects optimal worker counts based on system resources
Comprehensive Metrics
- Latency Percentiles: P50, P95, P99 latency measurements
- Throughput Analysis: Requests per second with real-time monitoring
- Resource Utilization: Memory usage, worker thread tracking, GC pressure
- Queue Time Tracking: Average and maximum queue times
xUnit v3 Integration
- Native Test Framework: Seamless integration with xUnit v3 test discovery and execution
- Attribute-based Configuration: Simple
[Load]
attributes for test configuration - Test Result Integration: Load test results integrated with xUnit test results
Actor-based Architecture
- Akka.NET Foundation: Built on proven actor model for reliability and scalability
- Message-driven Processing: Asynchronous message passing for high throughput
- Fault Tolerance: Supervisor hierarchies for robust error handling
📊 Performance Highlights
- High Throughput: Tested up to 500,000 requests with sustained performance
- Low Latency: Sub-millisecond overhead for test execution framework
- Resource Efficient: Optimized memory usage and GC pressure management
- Scalable: Automatic scaling based on available system resources
🔧 System Requirements
- .NET 8.0+
- xUnit v3 (preview)
- Akka.NET 1.5.41+
- Minimum 4GB RAM for high-load scenarios
- Multi-core CPU recommended for optimal performance
⚡ Installation
Install via NuGet package manager:
dotnet add package xUnitV3LoadFramework
🚦 Quick Start
Defining a Load Test
Use the Load
attribute (inheriting from FactAttribute
) to configure concurrency level, duration, interval, and execution order.
Running Your Load Test
Execute your tests using the standard xUnit command:
dotnet test
📝 Usage Examples
Basic Load Test Example
Here's a clear example demonstrating how to define and execute load tests using the Specification
base class and the [Load]
attribute:
using xUnitV3LoadFramework.Attributes;
using xUnitV3LoadFramework.Extensions;
using xUnitV3LoadFramework.Extensions.Framework;
using System;
[assembly: TestFramework(typeof(LoadTestFramework))]
namespace xUnitLoadDemo;
public class ExampleLoadSpecification : Specification
{
protected override void EstablishContext()
{
Console.WriteLine(">> Setup phase");
}
protected override void Because()
{
Console.WriteLine(">> Action phase");
}
[Load(order: 1, concurrency: 2, duration: 5000, interval: 500)]
public void should_run_load_scenario_1()
{
Console.WriteLine(">> Running Load 1");
}
[Load(order: 2, concurrency: 3, duration: 7000, interval: 300)]
public void should_run_load_scenario_2()
{
Console.WriteLine(">> Running Load 2");
}
}
API Load Testing Example
public class ApiLoadTests : Specification
{
[Load(order: 1, concurrency: 100, duration: 30000, interval: 1000)]
public async Task<bool> When_testing_api_endpoint()
{
using var client = new HttpClient();
var response = await client.GetAsync("https://api.example.com/health");
return response.IsSuccessStatusCode;
}
}
Each [Load]
attribute defines:
order
: the test execution orderconcurrency
: number of parallel executionsduration
: how long to run (in milliseconds)interval
: delay between each wave of execution (in milliseconds)
Run your tests using:
dotnet test
📖 Documentation
Getting Started
Architecture & Design
User Guides
API Reference
Best Practices
Advanced Topics
Examples & Scenarios
For comprehensive documentation, visit the docs folder.
Examples: examples
🤝 Contributing
Your contributions and feedback are always welcome!
- Submit issues or suggestions via GitHub Issues.
- Open pull requests following our Contributing Guidelines.
📜 License
This project is licensed under the MIT License.
📫 Contact
For questions, suggestions, or feedback, please open an issue or contact directly:
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- Akka (>= 1.5.41)
- xunit.v3.extensibility.core (>= 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.
Version | Downloads | Last Updated |
---|---|---|
2.0.0.36 | 125 | 9/12/2025 |
2.0.0.35 | 128 | 9/12/2025 |
2.0.0.27 | 350 | 8/5/2025 |
2.0.0.22 | 116 | 8/3/2025 |
2.0.0.21 | 114 | 8/3/2025 |
2.0.0.20 | 113 | 8/3/2025 |
2.0.0.19 | 119 | 8/3/2025 |
1.0.0.95 | 25 | 8/2/2025 |
1.0.0.94 | 26 | 8/1/2025 |
1.0.0.93 | 31 | 8/1/2025 |
1.0.0.92 | 105 | 7/29/2025 |
1.0.0.91 | 97 | 7/28/2025 |
1.0.0.90 | 95 | 7/28/2025 |
1.0.0.87 | 318 | 7/25/2025 |
1.0.0.86 | 318 | 7/25/2025 |
1.0.0.85 | 447 | 7/24/2025 |
1.0.0.84 | 441 | 7/24/2025 |
1.0.0.83 | 513 | 7/23/2025 |
1.0.0.81 | 515 | 7/22/2025 |
1.0.0.80 | 510 | 7/22/2025 |
1.0.0.79 | 517 | 7/22/2025 |
1.0.0.78 | 516 | 7/22/2025 |
1.0.0.77 | 519 | 7/22/2025 |
1.0.0.76 | 147 | 7/7/2025 |
1.0.0.75 | 140 | 7/7/2025 |
1.0.0.74 | 76 | 7/5/2025 |
1.0.0.73 | 249 | 5/12/2025 |
1.0.0.72 | 200 | 5/11/2025 |
1.0.0.71 | 192 | 5/11/2025 |
1.0.0.70 | 93 | 5/9/2025 |
1.0.0.69 | 91 | 5/9/2025 |
1.0.0.68 | 89 | 5/9/2025 |
1.0.0.67 | 96 | 5/9/2025 |
1.0.0.66 | 103 | 5/9/2025 |
1.0.0.65 | 102 | 5/9/2025 |
1.0.0.64 | 140 | 5/9/2025 |
1.0.0.63 | 146 | 5/9/2025 |
1.0.0.62 | 154 | 4/30/2025 |
1.0.0.61 | 152 | 4/30/2025 |
1.0.0.60 | 151 | 4/30/2025 |
1.0.0.57 | 153 | 4/30/2025 |