Ananke.Orchestration.Conformance.NUnit 0.9.0

dotnet add package Ananke.Orchestration.Conformance.NUnit --version 0.9.0
                    
NuGet\Install-Package Ananke.Orchestration.Conformance.NUnit -Version 0.9.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ananke.Orchestration.Conformance.NUnit" Version="0.9.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ananke.Orchestration.Conformance.NUnit" Version="0.9.0" />
                    
Directory.Packages.props
<PackageReference Include="Ananke.Orchestration.Conformance.NUnit" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Ananke.Orchestration.Conformance.NUnit --version 0.9.0
                    
#r "nuget: Ananke.Orchestration.Conformance.NUnit, 0.9.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Ananke.Orchestration.Conformance.NUnit@0.9.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Ananke.Orchestration.Conformance.NUnit&version=0.9.0
                    
Install as a Cake Addin
#tool nuget:?package=Ananke.Orchestration.Conformance.NUnit&version=0.9.0
                    
Install as a Cake Tool

Ananke.Orchestration.Conformance.NUnit

NUnit fixtures over the conformance contract. Inherit one, supply the adapter, and every scenario runs as its own test case.

[TestFixture]
public sealed class OpenAIConformanceTests : StreamingAgentModelConformanceTests
{
    protected override IStreamingAgentModel CreateModel() =>
        new OpenAIChatAgentModel(StubbedClient(), "gpt-4o-mini");
}

There are three: StreamingAgentModelConformanceTests, ToolSchemaTranslatorConformanceTests and JsonSchemaTranslatorConformanceTests.

Why this is a separate package

The contract itself must not be tied to a runner. Ananke.Orchestration.Conformance holds the scenarios as named delegates and asserts with Shouldly, which throws its own exception type and needs no framework; everything NUnit-shaped lives here. A consumer on xUnit, MSTest or TUnit takes the core, writes about ten lines of glue, and never acquires an NUnit dependency they did not choose.

That glue is all this package is:

[TestCaseSource] over Scenarios so each rule reports as its own test case rather than one aggregate
ConformanceOutcomeAssert maps Passed / Skipped / Failed onto NUnit's vocabulary

ConformanceOutcomeAssert is public so you can use the mapping from a hand-written fixture without inheriting one of the three.

Two details that are deliberate

Skipped becomes Assert.Ignore, so a skip reports as a skip. Several rules are conditional — "when usage is reported…" — and a provider that legitimately does not report usage has nothing to prove. The fixtures this grew from wrote that as Assert.Pass, which reports as a pass: a subclass that skipped every conditional scenario would read as fully green, which is the exact failure this package exists to prevent one level up.D2 says "other runners map it to their own skip" — NUnit's own skip is Assert.Ignore, so this follows D2's principle over its letter. The reason string is carried through, so the runner shows why.

A failure without a captured assertion throws AssertionException rather than calling Assert.Fail. Assert.Fail records into NUnit's ambient result as well as throwing, so a caught Assert.Fail still fails the surrounding test. Throwing the same exception type keeps the mapping testable and self-contained.

This is a library, not a test project

It references NUnit but neither Microsoft.NET.Test.Sdk nor NUnit3TestAdapter, so referencing it does not turn a consumer's project into something the SDK tries to run. Discovery happens in your test project, against your concrete subclasses.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.9.0 85 9/22/2026