XMapper.Testing
3.0.4
dotnet add package XMapper.Testing --version 3.0.4
NuGet\Install-Package XMapper.Testing -Version 3.0.4
<PackageReference Include="XMapper.Testing" Version="3.0.4" />
paket add XMapper.Testing --version 3.0.4
#r "nuget: XMapper.Testing, 3.0.4"
// Install XMapper.Testing as a Cake Addin #addin nuget:?package=XMapper.Testing&version=3.0.4 // Install XMapper.Testing as a Cake Tool #tool nuget:?package=XMapper.Testing&version=3.0.4
XMapper.Testing
Automate the testing of all your object-to-object mappers with one line of unit test code. <p align="center"> <img src="https://avatars.githubusercontent.com/u/103217522?s=150&v=4" alt="XMapper logo"/> </p>
Available via NuGet.
For more information about creating and using a mapper, see XMapper.
Example
- Assign your mappers to static fields or static properties:
using XMapper;
namespace DummyAssembly1;
public class Class1
{
private static readonly XMapper<DummyA, DummyB> MapperField =
new XMapper<DummyA, DummyB>(PropertyList.Target)
.IgnoreTargetProperty(x => x.Id);
}
- Test all mappers via a single method call inside a unit test:
using XMapper.Testing;
using Xunit;
using Xunit.Abstractions;
public class XMapperTests
{
private readonly ITestOutputHelper _testOutputHelper;
public XMapperTests(ITestOutputHelper testOutputHelper)
{
_testOutputHelper = testOutputHelper;
}
[Fact]
public void AllAreValid()
{
new XMapperValidator(_testOutputHelper.WriteLine).AllAreValidInAssembly("DummyAssembly1", TestCases.All);
}
}
In case the unit test passes, the Standard Output
in Visual Studio
's Test Explorer
will show something like:
Start collecting XMapper instance storage locations (static fields/properties).
Found 2 XMapper instance storage locations to test.
Validating 'DummyAssembly4.Class1.MyValidMapper1'.
Test case: AppDefaults
Test case: NotNullDefaults
Test case: TargetNullDefaults
Test case: NullDefaults
Test case: NoPublicFields
Validating 'DummyAssembly4.Class1.MyValidMapper2'.
Test case: AppDefaults
Test case: NotNullDefaults
Test case: TargetNullDefaults
Test case: NullDefaults
Test case: NoPublicFields
Finished validating all XMapper instances.
All assert options
AllAreValidInAssembly("Project1", TestCases.All);
AllAreValidInAssemblies(new [] { "MyProject1", "MyProject2" }, TestCases.All);
AllAreValidInAssembly(Assembly.Load("AnotherAssembly"), TestCases.All);
AllAreValidInAssemblies(new [] { Assembly.Load("MyAssembly1"), Assembly.Load("MyAssembly2") }, TestCases.All);
// specify only specific test cases from the TestCases flags enum:
AllAreValidInAssembly("Project1", TestCases.NotNullDefaults | TestCases.TargetNullDefaults);
// exclude one test case:
AllAreValidInAssembly("Project1", TestCases.All & ~TestCases.NoPublicFields);
// only validate specific mappers:
IsValid(MyProject1.Class1._someStaticFieldWithMapper, TestCases.All);
Hovering over methods and TestCases
enum values in your editor will provide guiding documentation.
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. |
-
net6.0
- XMapper (>= 3.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
IMPORTANT: major and minor version are a copy of the `XMapper` package's major and minor version.
Only the revision number of `XMapper.Testing` is independent of `XMapper`.
See https://github.com/XMapper/XMapper.Testing/blob/main/CHANGELOG.md for release notes.