```
This is put on test classes to indicate that none of the tests in that class (which as usual run serially with respect to each other) may run concurrently with tests in another class. This is used for tests that use a lot of disk space or memory, or dominate all the cores, such that they are likely to disrupt any tests that run concurrently.
+
+## FactAttribute and `Skip`
+
+Another way to disable the test entirely is to use the `Skip` named argument that is used on the `FactAttribute`.
+
+Example:
+```cs
+[Fact(Skip = "<reason for skipping>")]
+```
+
+If the reason for skipping is a link to an issue, it is recommended to use the `ActiveIssueAttribute` instead.
+Otherwise, `Skip` allows for a more descriptive reason.
List<AttributeData> filterAttributes = new();
foreach (var attr in method.GetAttributesOnSelfAndContainingSymbols())
{
+ var hasSkip = attr.NamedArguments.Any(x => x.Key == "Skip");
+
switch (attr.AttributeClass?.ToDisplayString())
{
case "Xunit.ConditionalFactAttribute":
- filterAttributes.Add(attr);
- factAttribute = true;
+ if (!hasSkip)
+ {
+ filterAttributes.Add(attr);
+ factAttribute = true;
+ }
break;
case "Xunit.FactAttribute":
- factAttribute = true;
+ if (!hasSkip)
+ {
+ factAttribute = true;
+ }
break;
case "Xunit.ConditionalTheoryAttribute":
- filterAttributes.Add(attr);
- theoryAttribute = true;
+ if (!hasSkip)
+ {
+ filterAttributes.Add(attr);
+ theoryAttribute = true;
+ }
break;
case "Xunit.TheoryAttribute":
- theoryAttribute = true;
+ if (!hasSkip)
+ {
+ theoryAttribute = true;
+ }
break;
case "Xunit.ConditionalClassAttribute":
case "Xunit.SkipOnPlatformAttribute":