DemaConsulting.TestResults 1.2.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package DemaConsulting.TestResults --version 1.2.0
                    
NuGet\Install-Package DemaConsulting.TestResults -Version 1.2.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="DemaConsulting.TestResults" Version="1.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DemaConsulting.TestResults" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="DemaConsulting.TestResults" />
                    
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 DemaConsulting.TestResults --version 1.2.0
                    
#r "nuget: DemaConsulting.TestResults, 1.2.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 DemaConsulting.TestResults@1.2.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=DemaConsulting.TestResults&version=1.2.0
                    
Install as a Cake Addin
#tool nuget:?package=DemaConsulting.TestResults&version=1.2.0
                    
Install as a Cake Tool

TestResults Library

GitHub forks GitHub Repo stars GitHub contributors GitHub Build Quality Gate Status Security Rating NuGet

A lightweight C# library for programmatically creating test result files in TRX and JUnit formats.

Features

  • âœĻ Simple API - Intuitive and easy-to-use object model
  • ðŸŽŊ Type-Safe - Strongly-typed C# classes for test results
  • ðŸŠķ Lightweight - Minimal external dependencies
  • 🔄 Multi-Target - Supports .NET 8, 9, and 10
  • ðŸ“Ķ NuGet Ready - Easy integration via NuGet package
  • 📊 Multiple Formats - Supports both TRX and JUnit XML formats
  • ✅ Compatible - Works with Visual Studio, Azure DevOps, and CI/CD systems

Installation

Install via NuGet Package Manager:

dotnet add package DemaConsulting.TestResults

Or via Package Manager Console:

Install-Package DemaConsulting.TestResults

Quick Start

Creating Test Result Files

The following code-snippet shows how to create test result files in both TRX and JUnit XML formats:

using DemaConsulting.TestResults;
using DemaConsulting.TestResults.IO;

// Create a TestResults instance
var results = new TestResults { Name = "SomeTests" };

// Add some results
results.Results.Add(
    new TestResult
    {
        Name = "Test1",
        ClassName = "SomeTestClass",
        CodeBase = "MyTestAssembly",
        Outcome = TestOutcome.Passed,
        Duration = TimeSpan.FromSeconds(1.5),
        StartTime = DateTime.UtcNow
    });

results.Results.Add(
    new TestResult
    {
        Name = "Test2",
        ClassName = "SomeTestClass",
        CodeBase = "MyTestAssembly",
        Outcome = TestOutcome.Failed,
        ErrorMessage = "Expected value to be 42 but was 0",
        ErrorStackTrace = "at SomeTestClass.Test2() in Test.cs:line 15"
    });

// Save the results to a TRX file (Visual Studio format)
File.WriteAllText("results.trx", TrxSerializer.Serialize(results));

// Save the results to a JUnit XML file
File.WriteAllText("results.xml", JUnitSerializer.Serialize(results));

Converting Between Formats

The library supports reading and converting between TRX and JUnit formats:

using DemaConsulting.TestResults.IO;

// Read JUnit XML file
var junitXml = File.ReadAllText("junit-results.xml");
var results = JUnitSerializer.Deserialize(junitXml);

// Convert to TRX format
var trxXml = TrxSerializer.Serialize(results);
File.WriteAllText("converted.trx", trxXml);

// Or convert TRX to JUnit
var trxXml2 = File.ReadAllText("test-results.trx");
var results2 = TrxSerializer.Deserialize(trxXml2);
var junitXml2 = JUnitSerializer.Serialize(results2);
File.WriteAllText("converted.xml", junitXml2);

Advanced Usage

Capturing Standard Output

var result = new TestResult
{
    Name = "TestWithOutput",
    ClassName = "MyTests",
    CodeBase = "MyAssembly",
    Outcome = TestOutcome.Passed,
    SystemOutput = "Debug information\nTest completed successfully"
};

Handling Test Failures

var failedResult = new TestResult
{
    Name = "FailingTest",
    ClassName = "MyTests",
    CodeBase = "MyAssembly",
    Outcome = TestOutcome.Failed,
    ErrorMessage = "Assertion failed: Expected 100, got 50",
    ErrorStackTrace = "at MyTests.FailingTest() in Tests.cs:line 42",
    SystemError = "Additional error details"
};

Test Outcomes

The library supports the following test outcomes:

  • Passed - Test passed successfully
  • Failed - Test failed
  • Inconclusive - Test result was inconclusive
  • NotExecuted - Test was not executed
  • Timeout - Test exceeded timeout limit
  • Aborted - Test was aborted
  • Unknown - Test outcome is unknown

Use Cases

This library is useful when you need to:

  • Generate TRX or JUnit XML files from custom test runners
  • Convert test results between formats (TRX ↔ JUnit)
  • Create test reports programmatically
  • Aggregate test results from multiple sources
  • Build custom testing tools that integrate with Visual Studio, Azure DevOps, or CI/CD systems

Documentation

Building from Source

# Clone the repository
git clone https://github.com/demaconsulting/TestResults.git
cd TestResults

# Restore tools
dotnet tool restore

# Restore dependencies
dotnet restore

# Build
dotnet build

# Run tests
dotnet test

Requirements

  • .NET 8.0, 9.0, or 10.0

Contributing

We welcome contributions! Please see our Contributing Guide for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

Developed and maintained by DEMA Consulting.

Product Compatible and additional computed target framework versions.
.NET 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 is compatible.  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 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.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

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
1.10.0 7,803 7/2/2026
1.9.0 3,412 6/1/2026
1.8.0 248 5/28/2026
1.7.0 7,660 4/3/2026
1.6.0 3,611 3/13/2026
1.5.0 2,796 2/19/2026
1.4.0 1,679 1/28/2026
1.3.0 757 1/13/2026
1.2.0 649 1/8/2026
1.1.0 459 12/15/2025
1.0.0 587 5/4/2025
0.1.0-alpha.1 151 2/20/2025