Subatomix.Testing
4.0.0-pre.5
See the version list below for details.
dotnet add package Subatomix.Testing --version 4.0.0-pre.5
NuGet\Install-Package Subatomix.Testing -Version 4.0.0-pre.5
<PackageReference Include="Subatomix.Testing" Version="4.0.0-pre.5" />
<PackageVersion Include="Subatomix.Testing" Version="4.0.0-pre.5" />
<PackageReference Include="Subatomix.Testing" />
paket add Subatomix.Testing --version 4.0.0-pre.5
#r "nuget: Subatomix.Testing, 4.0.0-pre.5"
#:package Subatomix.Testing@4.0.0-pre.5
#addin nuget:?package=Subatomix.Testing&version=4.0.0-pre.5&prerelease
#tool nuget:?package=Subatomix.Testing&version=4.0.0-pre.5&prerelease
About
My preferred frameworks for automated testing in .NET.
See here for a list of included packages and their versions.
This package also includes the
TestHarnessBase
class, which aids my preferred technique for setup/teardown code. Generally, I
eschew traditional SetUp and TearDown methods. Instead, in each test, I
create an instance of a disposable context class. Construction is setup, and
disposal is teardown. Because TestContext means something else already in
NUnit, I call this pattern Test Harness instead.
[Test]
public void TestSomething()
{
using var h = new TestHarness();
// rest of test
}
private class TestHarness : TestHarnessBase
{
// properties for mocks and things
public TestHarness()
{
// setup code
}
protected override CleanUp()
{
// teardown code
}
}
This pattern enables some cool things:
I can enable the C# 8 nullability checker and not have to sprinkle
?and!all over the test code.Tests can run in parallel, regardless of test fixture lifetime, since there is no longer any shared state within a test class.
Test-support code can be isolated away from the tests themselves.
If the
test fixture lifetime
is instance-per-test-case, the test fixture itself can be a subclass of
TestHarnessBase. This results in a test fixture more closely resembling a
traditional one and removes the need for a using statement in each test,
while retaining the improved nullability ergonomics. However, directly
subclassing TestHarnessBase forfeits the isolation afforded by having a
separate test harness class.
[TestFixture]
[FixtureLifeCycle(LifeCycle.InstancePerTestCase)]
public class SomeTests : TestHarnessBase
{
// properties for mocks and things
public TestHarness()
{
// setup code
}
protected override CleanUp()
{
// teardown code
}
[Test]
public void TestSomething()
{
// test
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Framework | net481 is compatible. |
-
.NETFramework 4.8.1
- coverlet.collector (>= 6.0.4 && < 7.0.0)
- Microsoft.NET.Test.Sdk (>= 17.13.0 && < 17.14.0)
- Moq (>= 4.20.72 && < 5.0.0)
- NUnit (>= 4.4.0 && < 5.0.0)
- NUnit3TestAdapter (>= 5.2.0 && < 6.0.0)
- Shouldly (>= 4.3.0 && < 5.0.0)
-
net6.0
- coverlet.collector (>= 6.0.4 && < 7.0.0)
- Microsoft.NET.Test.Sdk (>= 17.13.0 && < 17.14.0)
- Moq (>= 4.20.72 && < 5.0.0)
- NUnit (>= 4.4.0 && < 5.0.0)
- NUnit3TestAdapter (>= 5.2.0 && < 6.0.0)
- Shouldly (>= 4.3.0 && < 5.0.0)
-
net8.0
- coverlet.collector (>= 6.0.4 && < 7.0.0)
- Microsoft.NET.Test.Sdk (>= 17.13.0 && < 17.14.0)
- Moq (>= 4.20.72 && < 5.0.0)
- NUnit (>= 4.4.0 && < 5.0.0)
- NUnit3TestAdapter (>= 5.2.0 && < 6.0.0)
- Shouldly (>= 4.3.0 && < 5.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 |
|---|---|---|
| 4.0.0 | 570 | 12/1/2025 |
| 4.0.0-rc2 | 468 | 12/1/2025 |
| 4.0.0-pre.5 | 180 | 11/10/2025 |
| 4.0.0-pre.4 | 154 | 11/9/2025 |
| 4.0.0-pre.3 | 91 | 11/9/2025 |
| 4.0.0-pre.2 | 145 | 11/4/2025 |
| 4.0.0-pre.1 | 128 | 10/13/2025 |
| 3.2.0 | 379 | 2/23/2025 |
| 3.2.0-rc.1 | 105 | 2/23/2025 |
| 3.1.0 | 336 | 3/11/2024 |
| 3.1.0-rc.1 | 94 | 3/9/2024 |
| 3.0.0 | 297 | 12/23/2023 |
| 3.0.0-rc.1 | 106 | 12/23/2023 |
| 2.6.0 | 233 | 9/24/2023 |
| 2.5.1 | 392 | 7/21/2023 |
| 2.5.1-rc.1 | 165 | 7/21/2023 |
| 2.5.0 | 408 | 6/3/2023 |
| 2.5.0-rc.1 | 190 | 6/1/2023 |
| 2.4.1 | 530 | 12/10/2022 |
| 2.4.0 | 465 | 11/13/2022 |
| 2.4.0-rc.2 | 190 | 11/12/2022 |
| 2.4.0-rc.1 | 185 | 11/12/2022 |
| 2.3.0 | 502 | 10/29/2022 |
| 2.3.0-rc.1 | 190 | 10/29/2022 |
| 2.2.0 | 660 | 6/12/2022 |
| 2.2.0-rc.1 | 231 | 6/12/2022 |
| 2.1.0 | 658 | 5/22/2022 |
| 2.1.0-rc.1 | 226 | 5/22/2022 |
| 2.0.1 | 716 | 5/2/2022 |
| 2.0.0 | 716 | 4/18/2022 |
| 2.0.0-rc.4 | 233 | 4/18/2022 |
| 2.0.0-rc.3 | 236 | 4/17/2022 |
| 2.0.0-rc.2 | 264 | 2/6/2022 |
| 1.1.5 | 709 | 9/27/2021 |
| 1.1.5-rc.2 | 281 | 9/27/2021 |
| 1.1.3 | 678 | 4/4/2021 |
| 1.1.2 | 685 | 3/7/2021 |
| 1.1.1 | 675 | 2/3/2021 |
| 1.1.0 | 701 | 1/22/2021 |
| 1.0.0 | 745 | 12/26/2020 |
| 1.0.0-rc.2 | 408 | 12/18/2020 |
| 1.0.0-rc.1 | 438 | 11/1/2020 |