Interface IFactAttribute
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
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
Skip
Gets the skip reason for the test. When null is returned, the test is
not skipped.
string? Skip { get; }
Property Value
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
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
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
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
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).