CrestronHomeNUnit.TestAdapter
2.1.2
dotnet add package CrestronHomeNUnit.TestAdapter --version 2.1.2
NuGet\Install-Package CrestronHomeNUnit.TestAdapter -Version 2.1.2
<PackageReference Include="CrestronHomeNUnit.TestAdapter" Version="2.1.2"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="CrestronHomeNUnit.TestAdapter" Version="2.1.2" />
<PackageReference Include="CrestronHomeNUnit.TestAdapter"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add CrestronHomeNUnit.TestAdapter --version 2.1.2
#r "nuget: CrestronHomeNUnit.TestAdapter, 2.1.2"
#:package CrestronHomeNUnit.TestAdapter@2.1.2
#addin nuget:?package=CrestronHomeNUnit.TestAdapter&version=2.1.2
#tool nuget:?package=CrestronHomeNUnit.TestAdapter&version=2.1.2
Crestron Home workflow test adapter
Run a complete gated processor workflow from Visual Studio Test Explorer or VSTest-based dotnet test: local tests, processor test package deployment and activation, remote tests, optional live tests, optional production driver update and health checks, and configured cleanup.
Use a separate .NET 10 test project with Microsoft.NET.Test.Sdk and this package, both marked PrivateAssets="all". Driver and processor test projects can continue to target net472. This adapter does not replace the NUnit adapter used by ordinary local unit tests.
The package also includes CrestronHomeNUnit.Android for a separate .NET 10 NUnit UI-test project. Reference this package, NUnit, NUnit3TestAdapter and Microsoft.NET.Test.Sdk there. No Workflows.xml is needed in the UI project: the Crestron adapter discovers no workflows in that assembly, while the NUnit adapter runs its fixtures. Select the UI project through the private plan's androidTests stage, not its localTests. See Android setup. This is desktop test tooling; do not reference it from a net472 processor package.
Version 2.0.0 aligns the processor package tooling and supplied test fixtures with NUnit 5.0.0. Existing fixtures must await Assert.ThrowsAsync, Assert.CatchAsync and Assert.DoesNotThrowAsync. Explicit NUnit 4 processor packages remain supported when the test project and host versions match. Read the NUnit 5 migration guide before upgrading.
Add a Workflows.xml file to the workflow project:
<Workflows>
<Workflow id="development" name="Development processor workflow"
settingsEnvironment="CRESTRON_HOME_WORKFLOW_SETTINGS" />
</Workflows>
The package copies this file beside the test assembly automatically. Set CrestronWorkflowManifest to use a different manifest filename. Discovery reads only this public manifest and never contacts the processor.
Before starting Visual Studio, set the named environment variable to a private settings file containing planPath, userName and password. The referenced plan defines processor identity and certificate pins, source projects, package targets, suites, live inputs and cleanup. Keep credentials, plans and test results outside published source and packages.
Select the workflow in Test Explorer to run it. Individual test outcomes are reported as child results; the workflow passes only if all required stages pass. Do not include the workflow project in its own local test stage. Stop is cooperative: uncertain remote execution retains the processor lock for inspection.
See the Visual Studio guide and workflow configuration guide for setup and limitations.
Copyright (c) 2026 Neil Colvin. MIT licensed. Independent developer tooling; not affiliated with or endorsed by Crestron or the NUnit project.
Package acceptance checks
The repository's tools/Test-AdapterPackage.ps1 restores a clean consumer using an isolated cache and an exact source mapping for the package under test. It verifies workflow discovery, manifest copying, ordinary NUnit use of the Android API and the expected failure when private workflow settings are missing. It also compiles the Android regression fixtures against the packaged assemblies, compares executed tests with discovery and verifies those assembly bytes against the archive. No processor, emulator or production-source project reference is needed for these package checks. They do not replace physical workflow or driver acceptance tests.
Temporary managed-child fixtures
Version 1.10.0 adds optional androidTests.managedChildren targets to the combined workflow. The selected actual driver supplies the parent identity; the fixture receives actual created child IDs through session.Context.RequireManagedDevice(alias). Setup and cleanup use DevTools 1.6.0 under the existing reservations. Cleanup requires independently confirmed restoration, preserves failed test outcomes and removes only the run's own children. Existing plans without targets keep their previous context format.
See the plan example, fixture contract and recovery rules. The normal workflow passed a CP4-R development run with one selected editor Cancel fixture and verified restoration/removal. This is not final submission-candidate acceptance or certification.
Selected cases and an existing driver
Version 1.12.0 adds androidTests.requiredTests for exact discovered NUnit case names. A passing subset records its excluded cases and does not claim full-project coverage. The package also exposes InstalledDriverTests.RunAsync for a separate test phase against an already-installed driver, using DevTools 1.9.0 to compare the pinned package with extracted processor files. It retains separate test, restoration, owned-child cleanup and candidate-verification results without redeploying the parent driver.
See installed-driver testing for the CLI equivalent, private bindings and recovery rules. Offline package acceptance passed; a complete hardware run of this dedicated phase remains pending.
| Product | Versions 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. |
-
net10.0
- CrestronHomeDevTools (>= 1.13.1)
- Makaretu.Dns.Multicast (>= 0.27.0)
- SSH.NET (>= 2026.0.0)
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.1.2 | 0 | 9/29/2026 |
| 2.1.1 | 0 | 9/29/2026 |
| 2.1.0 | 0 | 9/29/2026 |
| 2.0.0 | 80 | 9/28/2026 |
| 1.12.4 | 56 | 9/28/2026 |
| 1.12.3 | 52 | 9/26/2026 |
| 1.12.2 | 80 | 9/25/2026 |
| 1.12.1 | 375 | 9/19/2026 |
| 1.12.0 | 85 | 9/18/2026 |
| 1.11.1 | 86 | 9/18/2026 |
| 1.11.0 | 146 | 9/17/2026 |
| 1.10.0 | 95 | 9/17/2026 |
| 1.9.0 | 105 | 9/17/2026 |
| 1.8.2 | 91 | 9/17/2026 |
| 1.8.1 | 105 | 9/16/2026 |
| 1.8.0 | 96 | 9/16/2026 |
| 1.7.1 | 93 | 9/16/2026 |
| 1.7.0 | 98 | 9/16/2026 |
| 1.6.0 | 84 | 9/16/2026 |
| 1.5.0 | 85 | 9/15/2026 |
# Crestron Home NUnit v2.1.2
Exact Android test selections can now run a mixture of ordinary and Explicit cases. Previously, NUnit adapter 6.3.0's Current execution path omitted the selected Explicit cases when ordinary cases were included. The workflow coverage check rejected the incomplete results, but manual-event tests never reached their operator prompts.
Selected execution now uses the adapter's documented Legacy discovery mode and Relaxed explicit mode with the same generated, pinned exact-name filter. The initial full inventory discovery stays in Current mode. Unselected ordinary and Explicit tests remain excluded. Runs without an exact selection still reject Explicit cases before execution. No device authority, physical prerequisite, restoration check or coverage requirement is relaxed.
Validation: all 349 offline workflow tests passed. A real-adapter regression reproduced the omission before the fix and passed afterwards for ordinary, all-explicit and mixed selections, including duplicate names, filter-like characters in names, and deliberately failing unselected ordinary and Explicit cases. No physical devices were used by these regression tests. Live manual-event execution and a complete submission rehearsal remain to be verified. Earlier incomplete runs remain failed; this release does not rewrite their evidence. NUnit remains 5.0.0 and the processor runner implementation is unchanged.
## Updating
Update the Windows CLI/runner distribution or CrestronHomeNUnit.TestAdapter to 2.1.2. No plan changes are required. Adopt the release in a new pinned workflow attempt; keep completed and failed attempts on their original tool versions. See https://github.com/oznetmaster/CrestronHomeNUnit/blob/main/docs/AndroidUiTesting.md for exact selection and evidence requirements. Visual Studio and VS Code use the same adapter.
Copyright (c) 2026 Neil Colvin. Licensed under the MIT License; see LICENSE.