B3.Blicks.TestKit 2026.7.18.17
B3.Blicks.TestKit
The integration-test harness for B3 Blicks. A Blick's (or an app's) test project references this
package to prove a Blick is valid, loads into its own isolated AssemblyLoadContext, and that a selected
set of versions composes without route or service collisions. Everything runs fully offline via the
resolver's LocalPathSource — no NuGet feed required.
Three test surfaces
BlickContract— structural assertions on anIBlick(non-emptyName, NuGet-parseableVersion, non-null nav/widget collections, non-empty routes). No.nupkgload needed.BlickLoadHarness— boots the real resolver against a local.nupkgdirectory and returns aLoadedBlickSetto assert on (ALC isolation, version, routes,ConfigureServices, static assets).BlickCombinationHarness— loads a full selection and fails with a readable message on a route collision, an unresolved Blick, or a throwingConfigureServices.
// Contract
BlickContract.AssertValid<MyBlick>();
// Load + assert one Blick (one-liner)
var set = await BlickLoadHarness.LoadAndAssert("B3.Blicks.MyThing.Blick", "1.0.0", packageDir, tempDir);
// Combination — catches cross-Blick collisions before a cluster does
await BlickCombinationHarness.AssertCombinationValid(
[("B3.Blicks.ReportsSample.Blick", "2.0.0"), ("B3.Blicks.NotesSample.Blick", "1.1.0")], packageDir, tempDir);
NUnit and bUnit are exposed transitively so a consuming test project gets them without re-declaring the
versions. See docs/USAGE.md §4 for the full workflow.
No packages depend on B3.Blicks.TestKit.
.NET 10.0
- B3.Blicks.Contracts (>= 2026.7.18.17)
- B3.Blicks.Resolver (>= 2026.7.18.17)
- B3.Common.SimpleLogging (>= 2026.5.12.1)
- NUnit (>= 4.5.1)
- NuGet.Versioning (>= 6.13.2)
- bunit (>= 1.40.0)
| Version | Downloads | Last updated |
|---|---|---|
| 2026.8.6.1 | 7 | 8/6/2026 |
| 2026.8.3.3 | 5 | 8/4/2026 |
| 2026.8.3.2 | 4 | 8/4/2026 |
| 2026.8.3.1 | 1 | 8/4/2026 |
| 2026.8.1.1 | 5 | 8/1/2026 |
| 2026.7.31.1 | 4 | 7/31/2026 |
| 2026.7.30.1 | 9 | 7/30/2026 |
| 2026.7.26.4 | 4 | 7/27/2026 |
| 2026.7.26.3 | 1 | 7/27/2026 |
| 2026.7.26.2 | 4 | 7/26/2026 |
| 2026.7.26.1 | 4 | 7/26/2026 |
| 2026.7.23.5 | 4 | 7/23/2026 |
| 2026.7.23.4 | 4 | 7/23/2026 |
| 2026.7.23.3 | 4 | 7/23/2026 |
| 2026.7.23.2 | 1 | 7/23/2026 |
| 2026.7.23.1 | 4 | 7/23/2026 |
| 2026.7.22.1 | 4 | 7/22/2026 |
| 2026.7.19.1 | 4 | 7/19/2026 |
| 2026.7.18.19 | 4 | 7/19/2026 |
| 2026.7.18.18 | 4 | 7/19/2026 |
| 2026.7.18.17 | 4 | 7/18/2026 |
| 2026.7.18.16 | 1 | 7/18/2026 |
| 2026.7.18.15 | 4 | 7/18/2026 |
| 2026.7.18.14 | 4 | 7/18/2026 |
| 2026.7.18.13 | 1 | 7/18/2026 |
| 2026.7.18.12 | 1 | 7/18/2026 |
| 2026.7.18.11 | 4 | 7/18/2026 |
| 2026.7.18.10 | 1 | 7/18/2026 |
| 2026.7.18.9 | 4 | 7/18/2026 |
| 2026.7.18.8 | 4 | 7/18/2026 |
| 2026.7.18.7 | 1 | 7/18/2026 |
| 2026.7.18.6 | 4 | 7/18/2026 |
| 2026.7.18.5 | 1 | 7/18/2026 |
| 2026.7.18.4 | 4 | 7/18/2026 |
| 2026.7.18.3 | 1 | 7/18/2026 |
| 2026.7.18.2 | 4 | 7/18/2026 |
| 2026.7.18.1 | 11 | 7/18/2026 |
| 2026.7.17.2 | 4 | 7/17/2026 |
| 2026.7.17.1 | 4 | 7/17/2026 |
| 2026.7.13.1 | 4 | 7/14/2026 |
| 2026.7.5.2 | 5 | 7/5/2026 |
| 2026.7.5.1 | 5 | 7/5/2026 |
| 2026.7.4.4 | 9 | 7/4/2026 |
| 2026.7.4.3 | 5 | 7/4/2026 |
| 2026.7.4.2 | 5 | 7/4/2026 |
| 2026.7.4.1 | 5 | 7/4/2026 |
| 2026.7.3.2 | 5 | 7/3/2026 |
| 2026.7.3.1 | 4 | 7/3/2026 |
| 2026.6.30.5 | 5 | 7/1/2026 |
| 2026.6.30.4 | 5 | 6/30/2026 |
| 2026.6.30.3 | 5 | 6/30/2026 |
| 2026.6.30.2 | 2 | 6/30/2026 |
| 2026.6.30.1 | 2 | 6/30/2026 |
| 2026.6.29.8 | 5 | 6/30/2026 |
| 2026.6.29.7 | 2 | 6/30/2026 |
| 2026.6.29.6 | 5 | 6/30/2026 |
| 2026.6.29.5 | 2 | 6/30/2026 |
| 2026.6.29.4 | 2 | 6/30/2026 |
| 2026.6.29.3 | 5 | 6/30/2026 |
| 2026.6.29.2 | 2 | 6/30/2026 |
| 2026.6.29.1 | 5 | 6/30/2026 |
| 2026.6.28.3 | 5 | 6/28/2026 |
| 2026.6.28.2 | 5 | 6/28/2026 |
| 2026.6.28.1 | 2 | 6/28/2026 |
| 2026.6.27.7 | 5 | 6/28/2026 |
| 2026.6.27.6 | 5 | 6/28/2026 |
| 2026.6.27.5 | 2 | 6/28/2026 |
| 2026.6.27.4 | 2 | 6/28/2026 |
| 2026.6.27.3 | 2 | 6/28/2026 |
| 2026.6.27.2 | 6 | 6/27/2026 |