Date: 2026-08-18
Accepted
Decision 0021 separated the neutral testing kernel from NUnit and preserved the
existing VSTest adapter and legacy nunit/* protocol as compatibility surfaces.
That compatibility baseline is retained on branch testing/nunit-vstest at
commit e32ae590.
On develop, maintaining VSTest and MTP together keeps a second discovery and
execution stack, requires netstandard2.0 adapter targets, exposes additional
test-platform assemblies to IDE discovery, and preserves provider-specific
wire contracts that are unnecessary for MTP execution.
develop supports NUnit host testing through Microsoft Testing Platform only.
- Delete the NUnit VSTest adapter, its tests, build imports, samples, solution entries, packaging inputs, and documentation.
- Remove VSTest runner dependencies from repository xUnit tests:
Microsoft.NET.Test.Sdk,Microsoft.TestPlatform.ObjectModel,xunit.runner.visualstudio, andNUnit3TestAdapter. Repository xUnit v3 tests run as MTP executables. Keepsamples/ricaun.NUnit.SampleTestsas a comparison sample that usesricaun.RevitTest.TestAdapter(andMicrosoft.NET.Test.Sdkon modern TFMs) against the sameHostSmokeTests. - Preserve
NUnititself: it remains the provider framework executed inside the host. PreserveMicrosoft.Testing.PlatformandMicrosoft.Testing.Platform.MSBuildwhere required. - Delete the legacy
nunit/*bridge protocol, compatibility DTOs, legacy pipe client, and legacy CLI mode. TestRunner invokes only the neutraltesting/hello,testing/run, andtesting/cancelsurface. - Delete
DevTools.NUnit.Transport. NUnit Runtime implementsITestingRuntimeSessiondirectly; the only loose cross-load-context contract isDevTools.Testing.Abstractions. - Remove
netstandard2.0targets and compatibility branches that existed for the VSTest adapter. Keepnet48, net8, and net10 host support. - Discovery remains local metadata discovery and never launches or contacts Revit/AutoCAD. Host activation remains execution-only.
NUnit test project
-> RevitDevTool.TestAdapter (Microsoft.Testing.Platform adapter,
local PE metadata scan)
-> Testing.Transport
-> DevTools.TestRunner (testing/run CLI)
-> DevTools.TestRunner.Core
-> testing/* host bridge
-> DevTools.Testing.Host
-> DevTools.NUnit.Host policy + DevTools.NUnit.Runtime
-> DevTools.Testing.Abstractions (single loose runtime identity)
No VSTest adapter, NUnit-specific bridge contract, or NUnit transport assembly participates in this graph.
- IDE discovery has one test-platform integration path.
- The published MTP package has a smaller private closure and no VSTest or
netstandard2.0compatibility payload. samples/ricaun.NUnit.SampleTestsis the only remaining VSTest surface (third-partyricaun.RevitTest.TestAdapter). It is a comparison sample, not the product path. Repositorytests/andsamples/DevTools.*.SampleTestsare MTP. Do not invoke in-repo tests with VSTest filters (FullyQualifiedName~) or rootdotnet test.net48remains supported for older Autodesk hosts; only the adapter-orientednetstandard2.0target is removed.- PolySharp and ILRepack policy remain outside this decision. Warning/noise evaluation follows after the MTP-only graph is stable.
- repository architecture scans find no DevTools VSTest adapter project, legacy
nunit/*protocol,netstandard2.0testing target, or NUnit Transport assembly.samples/ricaun.NUnit.SampleTestsmay keep ricaun's adapter; - all xUnit repository test projects build and execute with their MTP entry points and no VSTest runner packages;
- NUnit MTP clean-consumer restore, discovery, and run bootstrap pass for net48/net8/net10;
- local discovery proof shows zero host activation;
- Host/Runtime tests prove the neutral runtime contract, cancellation, generation isolation, and result capability parity;
- Revit/AutoCAD host projects compile without deployment or host launch.