Skip to content

refactor: migrate to TUnit#955

Merged
vbreuss merged 12 commits intomainfrom
topic/migrate-to-tunit
Mar 8, 2026
Merged

refactor: migrate to TUnit#955
vbreuss merged 12 commits intomainfrom
topic/migrate-to-tunit

Conversation

@vbreuss
Copy link
Copy Markdown
Member

@vbreuss vbreuss commented Mar 7, 2026

Migrates the test suite from xUnit/NUnit to TUnit, introduces new typed data sources/base classes for FileSystem/Time/Random systems, and updates the build pipeline to use the Microsoft Testing Platform (TRX + coverage).

Key Changes:

  • Converted test attributes and data sources to TUnit equivalents ([Test], Arguments, MethodDataSource, etc.).
  • Replaced generated/fixture-based test infrastructure with new *TestData + *TestBase patterns and typed data source attributes.
  • Updated CI/build scripts and package references to run tests and produce TRX + Cobertura coverage via the new test platform.

@vbreuss vbreuss self-assigned this Mar 7, 2026
@vbreuss vbreuss added the refactor A change or improvement without functional impact label Mar 7, 2026
@vbreuss vbreuss force-pushed the topic/migrate-to-tunit branch from b260a38 to e16be1f Compare March 7, 2026 19:42
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

Test Results

    102 files  +     50      102 suites  +50   2h 47m 58s ⏱️ + 2h 11m 37s
112 428 tests + 47 899   99 825 ✅ + 38 917  12 603 💤 + 8 982  0 ❌ ±0 
267 282 runs  +133 398  230 802 ✅ +111 468  36 480 💤 +21 930  0 ❌ ±0 

Results for commit 5638c9a. ± Comparison against base commit 875b85c.

This pull request removes 63817 and adds 111716 tests. Note that renamed tests count towards both.
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests+MockFileSystemTests ‑ GetExtensibilityOrThrow_DirectoryInfo_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests+MockFileSystemTests ‑ GetExtensibilityOrThrow_FileInfo_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests+MockFileSystemTests ‑ GetExtensibilityOrThrow_FileSystemStream_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests+RealFileSystemTests ‑ GetExtensibilityOrThrow_DirectoryInfo_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests+RealFileSystemTests ‑ GetExtensibilityOrThrow_FileInfo_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests+RealFileSystemTests ‑ GetExtensibilityOrThrow_FileSystemStream_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests+MockFileSystemTests ‑ CreateDirectory_NullDirectorySecurity_ShouldThrowArgumentNullException
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests+MockFileSystemTests ‑ CreateDirectory_ShouldChangeAccessControl(path: "bar")
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests+MockFileSystemTests ‑ CreateDirectory_ShouldChangeAccessControl(path: "bar\\foo")
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests+MockFileSystemTests ‑ GetAccessControl_ShouldBeInitializedWithNotNullValue
…
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests ‑ GetExtensibilityOrThrow_DirectoryInfo_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests ‑ GetExtensibilityOrThrow_FileInfo_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.AccessControlHelperTests ‑ GetExtensibilityOrThrow_FileSystemStream_ShouldNotThrow
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ CreateDirectory_NullDirectorySecurity_ShouldThrowArgumentNullException
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ CreateDirectory_ShouldChangeAccessControl(bar)
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ CreateDirectory_ShouldChangeAccessControl(bar\foo)
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ GetAccessControl_ShouldBeInitializedWithNotNullValue
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ GetAccessControl_ShouldReturnSetResult
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ GetAccessControl_WithAccessControlSections_ShouldBeInitializedWithNotNullValue
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ GetAccessControl_WithAccessControlSections_ShouldReturnSetResult
…
This pull request removes 3621 skipped tests and adds 12601 skipped tests. Note that renamed tests count towards both.
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests+RealFileSystemTests ‑ GetAccessControl_ShouldReturnSetResult
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests+RealFileSystemTests ‑ GetAccessControl_WithAccessControlSections_ShouldReturnSetResult
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path4f89f707-0e27-4188-821e-c5e69f2ee7c6")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path5a226916-0654-4ffb-84ba-3ad182ec6115")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path5cb8f6a0-16b3-4c3d-ad47-c224d94e362d")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path5e83dd5f-fba0-4171-b91a-c7814190c1bc")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "path9aa760a7-3a38-45b5-a9dc-0255cf472fe6")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+MockFileSystemTests ‑ SetAccessControl_ShouldNotUpdateTimes(path: "pathbed54699-f5cd-4500-8ba9-3401ce4ada7f")
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ GetAccessControl_ShouldReturnSetResult
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests+RealFileSystemTests ‑ GetAccessControl_WithAccessControlSections_ShouldReturnSetResult
…
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ GetAccessControl_WithAccessControlSections_ShouldBeInitializedWithNotNullValue
Testably.Abstractions.AccessControl.Tests.DirectoryAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ GetAccessControl_WithAccessControlSections_ShouldBeInitializedWithNotNullValue
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(0310f5e6-d124-41ed-8aa7-fffb10e0f3b4)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(09a2e549-ecb2-44fc-b363-080f1e12bf73)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(2804bcc8-d873-4596-89ae-ef6133e2dc35)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(2c71c61b-02a9-40a2-9f7a-2ec506272f2c)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(2fe4e773-32c1-4f88-b3b4-d179e0935349)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(378d71c3-bdf7-4913-907c-feaa98848d92)
Testably.Abstractions.AccessControl.Tests.DirectoryInfoAclExtensionsTests ‑ SetAccessControl_ShouldNotUpdateTimes(38110016-863e-4c84-9df9-21df7a614b76)
…
This pull request skips 2 tests.
Testably.Abstractions.Testing.Tests.FileSystemInitializerExtensionsTests ‑ InitializeFromRealDirectory_ShouldCopyFileToTargetDirectory
Testably.Abstractions.Testing.Tests.FileSystemInitializerExtensionsTests ‑ InitializeFromRealDirectory_ShouldRecursivelyCopyDirectoriesToTargetDirectory

♻️ This comment has been updated with latest results.

@vbreuss vbreuss marked this pull request as ready for review March 7, 2026 20:04
Copilot AI review requested due to automatic review settings March 7, 2026 20:04
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the test suite from xUnit/NUnit to TUnit, introduces new typed data sources/base classes for FileSystem/Time/Random systems, and updates the build pipeline to use the Microsoft Testing Platform (TRX + coverage).

Changes:

  • Converted test attributes and data sources to TUnit equivalents ([Test], Arguments, MethodDataSource, etc.).
  • Replaced generated/fixture-based test infrastructure with new *TestData + *TestBase patterns and typed data source attributes.
  • Updated CI/build scripts and package references to run tests and produce TRX + Cobertura coverage via the new test platform.

Reviewed changes

Copilot reviewed 201 out of 360 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/ExceptionTests.cs Convert DirectoryInfo exception theory data to TUnit method data sources and class ctor injection.
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/EnumerateFilesTests.cs Replace xUnit theory/inline data with TUnit [Test] + Arguments/AutoArguments.
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/EnumerateFileSystemInfosTests.cs Same TUnit migration for EnumerateFileSystemInfos tests.
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/EnumerateDirectoriesTests.cs Same TUnit migration for EnumerateDirectories tests.
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/DeleteTests.cs Migrate delete tests to TUnit data sources; update inline null handling.
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/CreateTests.cs Migrate create tests to TUnit; replace facts/theories with [Test] + arguments.
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/CreateSubdirectoryTests.cs Migrate to TUnit + FileSystemTestBase injection.
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/CreateAsSymbolicLinkTests.cs Migrate symlink tests to TUnit.
Tests/Testably.Abstractions.Tests/FileSystem/DirectoryInfo/AttributesTests.cs Migrate attribute tests to TUnit.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/UnixFileModeTests.cs Migrate Unix file mode tests to TUnit.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.cs Migrate directory tests to ctor-injected TUnit test base model.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/Tests.AdjustTimes.cs Convert adjust-time tests to [Test] + AutoArguments.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/ResolveLinkTargetTests.cs Convert resolve-link-target tests to TUnit and ctor injection.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/MoveTests.cs Convert move tests to TUnit and ctor injection.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetFileSystemInfosTests.cs Convert GetFileSystemEntries tests to TUnit data sources.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/GetDirectoryRootTests.cs Convert GetDirectoryRoot tests to TUnit arguments.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExistsTests.cs Convert Exists tests to TUnit arguments/auto args.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/ExceptionTests.cs Convert Directory exception tests to yielded data sources for TUnit.
Tests/Testably.Abstractions.Tests/FileSystem/Directory/CreateSymbolicLinkTests.cs Convert Directory symbolic link tests to TUnit.
Tests/Testably.Abstractions.Testing.Tests/TimeSystem/TimerHandlerTests.cs Switch [Fact] to TUnit [Test].
Tests/Testably.Abstractions.Testing.Tests/TimeSystem/TimerFactoryMockTests.cs Update TestContext cancellation token access for TUnit.
Tests/Testably.Abstractions.Testing.Tests/TimeSystem/TimeSystemExtensibilityTests.cs Replace TheoryData with IEnumerable + MethodDataSource.
Tests/Testably.Abstractions.Testing.Tests/TimeSystem/StopwatchMockTests.cs Convert inline data to TUnit Arguments and update cancellation token access.
Tests/Testably.Abstractions.Testing.Tests/TimeSystem/StopwatchFactoryMockTests.cs Switch [Fact] to [Test].
Tests/Testably.Abstractions.Testing.Tests/TimeProviderTests.cs Convert facts/theories to TUnit tests and auto arguments.
Tests/Testably.Abstractions.Testing.Tests/TestHelpers/Usings.cs Remove xUnit usings; add TUnit global using.
Tests/Testably.Abstractions.Testing.Tests/TestHelpers/FileSystemTestSettingsFixture.cs Remove xUnit collection fixture for settings.
Tests/Testably.Abstractions.Testing.Tests/Storage/NullContainerTests.cs Convert to TUnit tests and auto args.
Tests/Testably.Abstractions.Testing.Tests/Storage/LocationExtensionsTests.cs Convert to TUnit attribute/data model.
Tests/Testably.Abstractions.Testing.Tests/Storage/InMemoryStorageTests.cs Convert to TUnit + argument-driven cases.
Tests/Testably.Abstractions.Testing.Tests/Storage/InMemoryLocationTests.cs Convert to TUnit tests + auto args.
Tests/Testably.Abstractions.Testing.Tests/Statistics/StatisticsTests.cs Convert to TUnit and update cancellation token usage for parallel test.
Tests/Testably.Abstractions.Testing.Tests/Statistics/StatisticsTests.Helpers.cs Update generated test attribute strings from [Fact] to [Test].
Tests/Testably.Abstractions.Testing.Tests/Statistics/PropertyStatisticsTests.cs Convert statistics tests to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Statistics/PathStatisticsTests.cs Convert path statistics tests to TUnit arguments.
Tests/Testably.Abstractions.Testing.Tests/Statistics/ParameterDescriptionTests.cs Convert to TUnit with auto arguments and inline auto conversions.
Tests/Testably.Abstractions.Testing.Tests/Statistics/MethodStatisticsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileVersionInfoFactoryStatisticsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileSystemWatcherFactoryStatisticsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileStreamFactoryStatisticsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/FileInfoFactoryStatisticsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoStatisticsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DriveInfoFactoryStatisticsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Statistics/FileSystem/DirectoryInfoFactoryStatisticsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/RandomSystem/RandomSystemExtensibilityTests.cs Replace TheoryData with IEnumerable + MethodDataSource.
Tests/Testably.Abstractions.Testing.Tests/RandomProvider.GeneratorTests.cs Convert nested generator tests to TUnit + auto args.
Tests/Testably.Abstractions.Testing.Tests/MockTimeSystemTests.cs Convert to TUnit and update cancellation token access.
Tests/Testably.Abstractions.Testing.Tests/MockRandomSystemTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/MockFileSystemInitializationTests.cs Convert to TUnit; replace TheoryData with IEnumerable for OS list.
Tests/Testably.Abstractions.Testing.Tests/MockFileSystemExtensionsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Helpers/RandomSystemExtensionsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Helpers/PathHelperTests.cs Convert to TUnit arguments/auto args.
Tests/Testably.Abstractions.Testing.Tests/Helpers/FileSystemExtensionsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Helpers/FileSystemExtensibilityTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Helpers/FilePlatformIndependenceExtensionsTests.cs Convert to TUnit arguments/auto args.
Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Helpers/ExecuteTests.SimulatedPathTests.cs Convert to TUnit Arguments.
Tests/Testably.Abstractions.Testing.Tests/Helpers/ExceptionFactoryTests.cs Convert to TUnit and update inline auto data usage.
Tests/Testably.Abstractions.Testing.Tests/Helpers/EnumerationOptionsHelperTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/Helpers/EncryptionHelperTests.cs Convert to TUnit + auto args.
Tests/Testably.Abstractions.Testing.Tests/Helpers/CharExtensionMethodsTests.cs Convert to TUnit Arguments.
Tests/Testably.Abstractions.Testing.Tests/Helpers/CallerArgumentExpressionAttribute.cs Remove custom polyfill file (moved/covered elsewhere).
Tests/Testably.Abstractions.Testing.Tests/Helpers/AssemblyNameExtensionsTests.cs Convert to TUnit; disambiguate Assembly type alias.
Tests/Testably.Abstractions.Testing.Tests/FileSystemInitializerOptionsTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/FileSystemInitializer/TestingExceptionTests.cs Convert to TUnit + auto args.
Tests/Testably.Abstractions.Testing.Tests/FileSystemInitializer/FileDescriptionTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/FileSystemInitializer/DirectoryDescriptionTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/FileSystemInitializer/DirectoryCleanerTests.cs Switch xUnit collection constraint to TUnit NotInParallel.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/PathMockTests.cs Convert to TUnit + AutoArguments for matrix.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/FileVersionInfoFactoryMockTests.cs Convert to TUnit arguments/auto args.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/FileSystemWatcherFactoryMockTests.cs Convert to TUnit + NotInParallel.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/FileStreamFactoryMockTests.cs Convert to TUnit + NotInParallel.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/FileStreamFactoryMockTests.SafeFileHandle.cs Convert to TUnit + auto args.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/FileMockTests.cs Convert to TUnit + auto args.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/DirectoryMockTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/DefaultSafeFileHandleStrategyTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/DefaultAccessControlStrategyTests.cs Convert to TUnit.
Tests/Testably.Abstractions.Testing.Tests/FileSystem/ChangeDescriptionTests.cs Convert to TUnit + auto args.
Tests/Testably.Abstractions.Parity.Tests/TestHelpers/Usings.cs Replace xUnit global using with TUnit.
Tests/Testably.Abstractions.Parity.Tests/Net9ParityTests.cs Remove xUnit output helper; mark TUnit inherited tests.
Tests/Testably.Abstractions.Parity.Tests/Net8ParityTests.cs Same parity test base ctor update + [InheritsTests].
Tests/Testably.Abstractions.Parity.Tests/Net6ParityTests.cs Add [InheritsTests] for TUnit discovery.
Tests/Testably.Abstractions.Parity.Tests/Net48ParityTests.cs Remove xUnit output helper; add [InheritsTests].
Tests/Testably.Abstractions.Parity.Tests/Net10ParityTests.cs Remove xUnit output helper; add [InheritsTests].
Tests/Testably.Abstractions.Compression.Tests/ZipFile/Tests.cs Convert to ctor-injected FileSystemTestBase + TUnit.
Tests/Testably.Abstractions.Compression.Tests/ZipFile/OpenTests.cs Convert to TUnit Arguments/AutoArguments.
Tests/Testably.Abstractions.Compression.Tests/ZipArchiveFactory/Tests.cs Convert helpers from TheoryData to yielded tuples.
Tests/Testably.Abstractions.Compression.Tests/ZipArchiveEntry/ExtensionTests.cs Convert to TUnit + ctor injection.
Tests/Testably.Abstractions.Compression.Tests/ZipArchive/Tests.cs Convert to TUnit + ctor injection.
Tests/Testably.Abstractions.Compression.Tests/ZipArchive/ExtensionTests.cs Convert to TUnit + ctor injection.
Tests/Testably.Abstractions.Compression.Tests/Testably.Abstractions.Compression.Tests.csproj Remove analyzer/source-generator wiring and generated output settings.
Tests/Testably.Abstractions.Compression.Tests/TestHelpers/Usings.cs Swap AutoFixture.Xunit3/xUnit for TUnit.
Tests/Testably.Abstractions.Compression.Tests/Internal/ZipUtilitiesTests.cs Replace AutoFixture data with explicit TUnit Arguments.
Tests/Testably.Abstractions.Compression.Tests/Internal/ExecuteTests.cs Convert to TUnit.
Tests/Testably.Abstractions.AccessControl.Tests/Testably.Abstractions.AccessControl.Tests.csproj Remove analyzer/source-generator wiring and generated output settings.
Tests/Testably.Abstractions.AccessControl.Tests/TestHelpers/Usings.cs Replace xUnit global using with TUnit.
Tests/Testably.Abstractions.AccessControl.Tests/Internal/AccessControlHelperTests.cs Replace AutoFixture-based interface generation with Mockolate.
Tests/Testably.Abstractions.AccessControl.Tests/FileStreamAclExtensionsTests.cs Convert to TUnit + ctor-injected base.
Tests/Testably.Abstractions.AccessControl.Tests/FileInfoAclExtensionsTests.cs Convert to TUnit + ctor-injected base.
Tests/Testably.Abstractions.AccessControl.Tests/FileAclExtensionsTests.cs Convert to TUnit + ctor-injected base.
Tests/Testably.Abstractions.AccessControl.Tests/ExceptionTests.cs Convert TheoryData to yielded tuple data source for TUnit.
Tests/Testably.Abstractions.AccessControl.Tests/ExceptionMissingFileTests.cs Split directory/file callback sources for TUnit method data sources.
Tests/Testably.Abstractions.AccessControl.Tests/DirectoryInfoAclExtensionsTests.cs Convert to TUnit; adjust cancellation token usage.
Tests/Testably.Abstractions.AccessControl.Tests/DirectoryAclExtensionsTests.cs Convert to TUnit; adjust cancellation token usage.
Tests/Testably.Abstractions.AccessControl.Tests/AccessControlHelperTests.cs Convert to TUnit + ctor-injected base.
Tests/Settings/Testably.Abstractions.TestSettings/Testably.Abstractions.TestSettings.csproj Remove obsolete NUnit-based settings project.
Tests/Settings/Testably.Abstractions.TestSettings/RealFileSystemTests.cs Remove obsolete NUnit-based settings tests.
Tests/Settings/Testably.Abstractions.TestSettings/LongRunningTests.cs Remove obsolete NUnit-based settings tests.
Tests/Settings/Testably.Abstractions.TestSettings/Helper.cs Remove settings file writer helper (NUnit project removed).
Tests/Settings/Testably.Abstractions.TestSettings/BrittleTests.cs Remove obsolete NUnit-based settings tests.
Tests/Settings/Directory.Build.props Remove settings project-specific props (NUnit stack removed).
Tests/Helpers/Testably.Abstractions.Tests.SourceGenerator/Testably.Abstractions.Tests.SourceGenerator.csproj Remove test source generator project.
Tests/Helpers/Testably.Abstractions.Tests.SourceGenerator/SourceGenerationHelper.cs Remove generator code for xUnit fixtures/markers/test classes.
Tests/Helpers/Testably.Abstractions.Tests.SourceGenerator/SourceGenerationHelper.TimeSystem.cs Remove generator code for time system test classes.
Tests/Helpers/Testably.Abstractions.Tests.SourceGenerator/SourceGenerationHelper.RandomSystem.cs Remove generator code for random system test classes.
Tests/Helpers/Testably.Abstractions.Tests.SourceGenerator/Properties/launchSettings.json Remove generator debug launch settings.
Tests/Helpers/Testably.Abstractions.Tests.SourceGenerator/ClassModelType.cs Remove generator model type.
Tests/Helpers/Testably.Abstractions.Tests.SourceGenerator/ClassModel.cs Remove generator model.
Tests/Helpers/Testably.Abstractions.TestHelpers/TimeSystemTestsAttribute.cs Add TUnit typed data source for time system tests (mock + real).
Tests/Helpers/Testably.Abstractions.TestHelpers/TimeSystemTestData.cs Add time system test-case wrapper for ctor injection.
Tests/Helpers/Testably.Abstractions.TestHelpers/TimeSystemTestBase.cs Add base class with shared constants + cancellation token for time tests.
Tests/Helpers/Testably.Abstractions.TestHelpers/Testably.Abstractions.TestHelpers.csproj Add AutoFixture + project reference changes for new TUnit test infra.
Tests/Helpers/Testably.Abstractions.TestHelpers/Skip.cs Redirect skip implementation to TUnit skip primitives.
Tests/Helpers/Testably.Abstractions.TestHelpers/Settings/TestSettingsFixture.cs Remove file-based test settings fixture (xUnit fixture).
Tests/Helpers/Testably.Abstractions.TestHelpers/Settings/TestSettingStatus.cs Remove standalone enum (moved into Settings).
Tests/Helpers/Testably.Abstractions.TestHelpers/Settings.cs Replace instance settings model with static settings store + nested enum.
Tests/Helpers/Testably.Abstractions.TestHelpers/Record.cs Add xUnit-like Record.Exception* helpers for tests.
Tests/Helpers/Testably.Abstractions.TestHelpers/RandomSystemTestsAttribute.cs Add typed data source for random system tests (mock + real).
Tests/Helpers/Testably.Abstractions.TestHelpers/RandomSystemTestData.cs Add random system test-case wrapper.
Tests/Helpers/Testably.Abstractions.TestHelpers/RandomSystemTestBase.cs Add base class for random system tests.
Tests/Helpers/Testably.Abstractions.TestHelpers/FileSystemTestsAttribute.cs Add typed data source + discovery hook for file system test matrix and parallel constraints.
Tests/Helpers/Testably.Abstractions.TestHelpers/FileSystemTestData.cs Add test-case model for mocked/simulated/real file systems and directory cleaner.
Tests/Helpers/Testably.Abstractions.TestHelpers/FileSystemTestBase.cs Add unified base class providing FileSystem, TimeSystem, BasePath, skip helpers, cancellation token.
Tests/Helpers/Testably.Abstractions.TestHelpers/AutoDomainDataAttribute.cs Remove xUnit AutoData-with-customizations attribute.
Tests/Helpers/Testably.Abstractions.TestHelpers/AutoArguments.cs Add TUnit-compatible AutoFixture-backed mixed inline/auto argument generator.
Tests/Directory.Build.props Replace xUnit/NUnit tooling with TUnit engine + MTP TRX/coverage extensions.
Tests/Api/Testably.Abstractions.Core.Api.Tests/Testably.Abstractions.Core.Api.Tests.csproj Set TFM explicitly for API checks under new test platform.
Tests/Api/Testably.Abstractions.Core.Api.Tests/Helper.cs Alias Assembly to avoid missing import differences.
Tests/Api/Testably.Abstractions.Core.Api.Tests/ApiApprovalTests.cs Convert NUnit approval tests to TUnit method data sources.
Tests/Api/Testably.Abstractions.Core.Api.Tests/ApiAcceptance.cs Convert NUnit explicit acceptance test to TUnit + async aweXpect.
Tests/Api/Testably.Abstractions.Api.Tests/Testably.Abstractions.Api.Tests.csproj Set TFM explicitly for API checks under new test platform.
Tests/Api/Testably.Abstractions.Api.Tests/Helper.cs Alias Assembly to avoid missing import differences.
Tests/Api/Testably.Abstractions.Api.Tests/ApiApprovalTests.cs Convert NUnit approval tests to TUnit method data sources.
Tests/Api/Testably.Abstractions.Api.Tests/ApiAcceptance.cs Convert NUnit explicit acceptance test to TUnit + async aweXpect.
Tests/Api/Directory.Build.props Remove API-tests-only props (NUnit stack removed).
Testably.Abstractions.slnx Remove now-deleted Settings and SourceGenerator projects from solution.
Testably.Abstractions.sln.DotSettings Enable JetBrains testing platform provider settings.
README.md Update usage example attribute from [Fact] to [Test].
Pipeline/Build.UnitTest.cs Switch test execution to MTP-style TRX + coverage args.
Pipeline/Build.MutationTests.cs Update Stryker target framework + use MTP runner switch.
Pipeline/Build.CodeCoverage.cs Adjust ReportGenerator input glob for Cobertura output naming.
Pipeline/Build.ApiChecks.cs Switch API checks to MTP-style TRX args.
Directory.Packages.props Replace xUnit/NUnit packages with TUnit engine + MTP extensions, add AutoFixture base package.

@vbreuss vbreuss force-pushed the topic/migrate-to-tunit branch from 6866f57 to 96ec6d0 Compare March 7, 2026 20:41
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Mar 8, 2026

Quality Gate Passed Quality Gate passed

Issues
0 New issues
1 Accepted issue

Measures
0 Security Hotspots
No data about Coverage
0.0% Duplication on New Code

See analysis details on SonarQube Cloud

@vbreuss vbreuss merged commit f1bf648 into main Mar 8, 2026
13 checks passed
@vbreuss vbreuss deleted the topic/migrate-to-tunit branch March 8, 2026 13:21
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 8, 2026

This is addressed in release v5.3.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactor A change or improvement without functional impact state: released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants