TestAttachments.NUnit
4.0.0-Preview-20241018-1255
dotnet add package TestAttachments.NUnit --version 4.0.0-Preview-20241018-1255
NuGet\Install-Package TestAttachments.NUnit -Version 4.0.0-Preview-20241018-1255
<PackageReference Include="TestAttachments.NUnit" Version="4.0.0-Preview-20241018-1255" />
paket add TestAttachments.NUnit --version 4.0.0-Preview-20241018-1255
#r "nuget: TestAttachments.NUnit, 4.0.0-Preview-20241018-1255"
// Install TestAttachments.NUnit as a Cake Addin #addin nuget:?package=TestAttachments.NUnit&version=4.0.0-Preview-20241018-1255&prerelease // Install TestAttachments.NUnit as a Cake Tool #tool nuget:?package=TestAttachments.NUnit&version=4.0.0-Preview-20241018-1255&prerelease
Overview
When writing tests that depend heavily on resources and attachment files, it is usually convenient to have an easy way to retrieve the resources, and also to have a way to organize the attached files based on the test IDs.
NUnit provides the properties needed to build per test paths in the TestContext
object,
but the rest is up to the developer.
This library provides a last mile API, easing the process of working with resources and file attachments.
Usage
The library defines two attributes
ResourcePathFormat(string format)
AttachmentPathFormat(string format)
Which can be used in assemblies, classes and individual methods.
The format defines how the test output directory will be created for the given test, by using a number of macros:
Predefined absolute path macross:
macro | value |
---|---|
WorkDirectory or * | context.WorkDirectory |
TestDirectory | context.TestDirectory |
TempDirectory | System.IO.Path.GetTempPath() |
CurrentDirectory | Environment.CurrentDirectory |
SolutionDirectory | finds the top most solution (.sln) file and takes its directory |
predefined relative path macross:
macro | value |
---|---|
ID or ? | context.Test.ID |
Name | context.Test.Name |
FullName | context.Test.FullName |
ClassName | context.Test.ClassName |
MethodName | context.Test.MethodName |
CurrentRepeatCount | context.CurrentRepeatCount |
WorkerId | context.WorkerId |
Date | DateTime.Now 'yyyMMdd' |
Time | DateTime.Now 'hhmmss' |
By using these macros, we can define the attribute like this:
[AttachmentPathFormat("{WorkDirectory}/{ID}/{Date}")]
when running a test, it will replace the macros with the appropiate values taken from the current test context.
the default and most common use will be
[AttachmentPathFormat("?")]
which creates a directory for every test.
Example
using NUnit.Framework;
[assembly: ResourcePathFormat("{TestDirectory}/Resources")]
[assembly: AttachmentPathFormat("{WorkDirectory}/TestResults/{ID}")]
namespace TestNamespace
{
[AttachmentPathFormat("{WorkDirectory}/{ID}")] // Alternatively: [AttachmentPathFormat("?")]
public class TestClass
{
[Test]
public void WriteTextAttachment()
{
var text = ResourceInfo
.From("hello.txt")
.ReadAllText();
text += " - good bye!";
AttachmentInfo
.From("result.txt")
.WriteAllText(text);
}
[Test]
[AttachmentPathFormat("{WorkDirectory}/ExplicitMethodResult-{Date}-{Time}")]
public void WriteExplicitTextAttachment()
{
var text = ResourceInfo
.From("hello.txt")
.ReadAllText();
text += " - good bye!";
AttachmentInfo
.From("result.txt")
.WriteAllText(text);
}
}
}
Related issues
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 was computed. 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. |
.NET Framework | net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
.NETFramework 4.6.2
- NUnit (>= 4.2.2)
- System.Text.Json (>= 8.0.5)
-
net6.0
- NUnit (>= 4.2.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on TestAttachments.NUnit:
Repository | Stars |
---|---|
vpenades/SharpGLTF
glTF reader and writer for .NET Standard
|
Version | Downloads | Last updated |
---|---|---|
4.0.0-Preview-20241018-1255 | 90 | 10/18/2024 |
4.0.0-Preview-20240102-0955 | 2,233 | 1/2/2024 |
4.0.0-Preview-20231128-1207 | 815 | 11/28/2023 |
3.0.0-Preview-20230511-1511 | 355 | 5/11/2023 |