![]() |
VOOZH | about |
dotnet add package Rig.TUnit.Parallelism --version 0.1.0-beta.2
NuGet\Install-Package Rig.TUnit.Parallelism -Version 0.1.0-beta.2
<PackageReference Include="Rig.TUnit.Parallelism" Version="0.1.0-beta.2" />
<PackageVersion Include="Rig.TUnit.Parallelism" Version="0.1.0-beta.2" />Directory.Packages.props
<PackageReference Include="Rig.TUnit.Parallelism" />Project file
paket add Rig.TUnit.Parallelism --version 0.1.0-beta.2
#r "nuget: Rig.TUnit.Parallelism, 0.1.0-beta.2"
#:package Rig.TUnit.Parallelism@0.1.0-beta.2
#addin nuget:?package=Rig.TUnit.Parallelism&version=0.1.0-beta.2&prereleaseInstall as a Cake Addin
#tool nuget:?package=Rig.TUnit.Parallelism&version=0.1.0-beta.2&prereleaseInstall as a Cake Tool
ParallelIsolationContract— family-level suite asserting a provider fixture behaves correctly under concurrentTUnitparallel execution.
A small but load-bearing contract suite. Every provider that claims to be
parallel-safe must inherit ParallelIsolationContract<TFixture> and register
it via [InheritsTests] at the family level. The contract drives N parallel
test iterations, observes whether they trample each other's state, and
reports both the observed concurrency (did they actually run in parallel?)
and the correctness (did they isolate?).
Combined with IsolationKey, this is the package that keeps the "fixtures
are parallel-safe" claim honest across 30+ providers.
ParallelIsolationContract<TFixture> to your integration project.[NotInParallel] — the contract is how you prove the marker can be
removed.using Rig.TUnit.Parallelism.Helpers;
var report = await ParallelIsolationHarness.RunAsync(
iterations: 8,
buildFixture: () => new InMemoryFixture());
await Assert.That(report.MaxConcurrency).IsGreaterThan(1);
await Assert.That(report.StateCollisions).IsEqualTo(0);
| Property | Type | Default | Description |
|---|---|---|---|
Iterations |
int |
8 |
Number of parallel test instances. |
PerIterationTimeout |
TimeSpan |
30s |
Max time per concurrent run before harness aborts. |
RequireActualParallelism |
bool |
true |
Fail if MaxConcurrency is 1 — that indicates a global lock is serialising work. |
Rig.TUnit.Parallelism.Helpers.ParallelIsolationHarness — test driverRig.TUnit.Parallelism.Helpers.ParallelIsolationReport — results shapeEach iteration runs in its own Task; the harness captures collision
evidence (shared mutable state observed) and reports per-iteration timing so
a regression (e.g., accidental global lock) is visible immediately.
Iterations=8 by
default; adjust down for expensive providers (Oracle, Cosmos) via config.MaxConcurrency=1 — something serialised the runs. Common causes:
[NotInParallel] marker, a static readonly SemaphoreSlim shared across
fixtures, or a global Docker network with a single bind-port.StateCollisions > 0 — two iterations observed the same container or
schema name. Re-check IsolationKey threading in the provider's fixture.See .
Rig.TUnit.Messaging.Kafka's README).Iterations = 1).See ;
tracked in benchmarks/baseline-005.json.
MIT. See .
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on Rig.TUnit.Parallelism:
| Package | Downloads |
|---|---|
|
Rig.TUnit.All
Meta-package containing every Rig.TUnit.* package. DISCOURAGED — prefer per-feature or per-stack meta-packages (Rig.TUnit, Rig.TUnit.Microservices). |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-beta.2 | 66 | 4/27/2026 |
| 0.0.0-alpha.0.14 | 64 | 4/26/2026 |