Table of Contents

Interface IFactAttribute

Namespace
Xunit.v3
Assembly
xunit.v3.core.dll

Attribute that is applied to a method to indicate that it is a test method that should be run by the default test runner. Implementations must be decorated by XunitTestCaseDiscovererAttribute to indicate which class is responsible for converting the test method into one or more tests.

public interface IFactAttribute

Remarks

The attribute can only be applied to methods, and only one attribute is allowed.

Properties

DisplayName

Gets the name of the test to be used when the test is skipped. When null is returned, will cause a default display name to be used.

string? DisplayName { get; }

Property Value

string

Explicit

Gets a flag which indicates whether the test should only be run explicitly. An explicit test is skipped by default unless explicit tests are requested to be run.

bool Explicit { get; }

Property Value

bool

Skip

Gets the skip reason for the test. When null is returned, the test is not skipped.

string? Skip { get; }

Property Value

string

Remarks

Skipping is conditional based on whether SkipWhen or SkipUnless is set.

SkipExceptions

Gets exceptions that, when thrown, will cause the test to be skipped rather than failed.

Type[]? SkipExceptions { get; }

Property Value

Type[]

Remarks

The skip reason will be the exception's message.

SkipType

Gets the type to retrieve SkipUnless or SkipWhen from. If not set, then the property will be retrieved from the unit test class.

Type? SkipType { get; }

Property Value

Type

SkipUnless

Gets the name of a public static property on the test class which returns bool to indicate whether the test should be skipped (false) or not (true).

string? SkipUnless { get; }

Property Value

string

Remarks

This property cannot be set if SkipWhen is set. Setting both will result in a failed test. To ensure compile-time safety and easier refactoring, use the nameof operator, e.g., SkipUnless = nameof(IsConditionMet).

SkipWhen

Gets the name of a public static property on the test class which returns bool to indicate whether the test should be skipped (true) or not (false).

string? SkipWhen { get; }

Property Value

string

Remarks

This property cannot be set if SkipUnless is set. Setting both will result in a failed test. To avoid issues during refactoring, it is recommended to use the nameof operator to reference the property, e.g., SkipWhen = nameof(IsTestSkipped).

Timeout

Gets the timeout for test (in milliseconds). When 0 is returned, the test will not have a timeout.

int Timeout { get; }

Property Value

int

Remarks

WARNING: Using this with Aggressive will result in undefined behavior. Test timing and timeouts are only reliable when using Conservative (or when parallelization is disabled completely).