HoNoSoFt.XUnit.Extensions 1.1.0

.NET Standard 2.0
dotnet add package HoNoSoFt.XUnit.Extensions --version 1.1.0
NuGet\Install-Package HoNoSoFt.XUnit.Extensions -Version 1.1.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="HoNoSoFt.XUnit.Extensions" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add HoNoSoFt.XUnit.Extensions --version 1.1.0
#r "nuget: HoNoSoFt.XUnit.Extensions, 1.1.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.
// Install HoNoSoFt.XUnit.Extensions as a Cake Addin
#addin nuget:?package=HoNoSoFt.XUnit.Extensions&version=1.1.0

// Install HoNoSoFt.XUnit.Extensions as a Cake Tool
#tool nuget:?package=HoNoSoFt.XUnit.Extensions&version=1.1.0

GitHub Build status NuGet NuGet

HoNoSoFt.XUnit.Extensions

XUnit extensions in order to have new attributes.

Available attributes

Name Short Description
FileData Read the content as is as string
JsonFileData Read the content and try to cast to the desired object (see next section)
XmlFileData Read the content and try to cast to the desired object (Same as JsonFileData)
BinaryFileData Read the content and send the content as byte[]

Attribute JsonFileData

This attribute is in order to use Json file. This attribute can be used in two different way.

  1. The easy and strongly typed version
    • Issue that can't be fixed due to XUnit framework: The display in test explorer will show 1, and all tests are combined. Basically it's because we use a strongly typed object and that the framework can't allow that.
  2. The bit more step, but somewhat strongly typed
    • Issue: Require a bit more typing

Lazy version

This will display as one global tests, if ran in command line, all tests will be counted properly.

public class MyTests {
  [Theory]
  [JsonFileData("./assets/sample.json", "data")]
  [JsonFileData("./assets/sample.json", "data2")]
  public void JsonFileAttribute(Sample mySample, string expectedResult)
  {
      Assert.Equal(expectedResult, mySample.SampleProp);
  }
}

public class Sample
{
    public string SampleProp { get; set; }
}

Discoverable in test explorer version

This will display as multiple global tests (one per JsonFileData), if ran in command line, all tests will be counted properly.

Also, it's important to note that even if the serialization happens, we still keep the original data available in the attribute Original. For example mySpecialJson.Original will contains the raw file content.

public class MyTests {

  [Theory]
  [JsonFileData("./assets/sample.json", typeof(Sample), "data")]
  [JsonFileData("./assets/sample2.json", typeof(Sample), "data2")]
  public void JsonFileAttribute(JsonData mySpecialJson, string expectedResult)
  {
      Assert.Equal(typeof(Sample), mySpecialJson.Data.GetType());
      Assert.Equal(expectedResult, (mySample.Data as Sample).SampleProp);
  }
}

public class Sample
{
    public string SampleProp { get; set; }
}

Attribute XmlFileData

This attribute works the same way as the Json attribute.

Contributor(s)

At the moment, no specific contributor except the author @Nordes 😉.

License

MIT (Enjoy)

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net461 net462 net463 net47 net471 net472 net48 net481
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

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.1.0 7,929 9/4/2018
1.0.2 686 8/31/2018
1.0.1 629 8/31/2018
1.0.0 627 8/29/2018
0.5.0 636 8/28/2018