cecilphillip
cecilphillip

Reputation: 11586

Customize Test Name in Xunit2

When I run my tests today with xUnit v2, I typically use a naming convention like:

[Fact(DisplayName= "Method Will Do Something")] public void Method_Will_Do_Something() { }

What extensibility point can I plug into that will allow me set my test display name based on the naming conventions of my test method?

Upvotes: 8

Views: 3286

Answers (2)

Steve Drake
Steve Drake

Reputation: 2048

Create a custom class for your fact

public sealed class MyFactAttribute : FactAttribute
{
    public MyFactAttribute([CallerMemberName] string memberName = null)
    {
        DisplayName = memberName;
    }
}

And use as follows

[MyFact]
public void FileSystemProvider_Sync()

Upvotes: 3

Brad Wilson
Brad Wilson

Reputation: 70586

The simplest way: Custom fact attribute, discoverer, and test case.

Example: https://github.com/xunit/samples.xunit/tree/master/RetryFactExample

For your custom test case, derive from XunitTestCase and override the Initialize() method. After calling base.Initialize(), set the DisplayName property appropriately.

You can see the default behavior for XunitTestCase here: https://github.com/xunit/xunit/blob/master/src/xunit.execution/Sdk/Frameworks/XunitTestCase.cs

Upvotes: 7

Related Questions