xunit

xUnit .NET testing framework. Use for .NET testing.

7 stars

Best use case

xunit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

xUnit .NET testing framework. Use for .NET testing.

Teams using xunit should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/xunit/SKILL.md --create-dirs "https://raw.githubusercontent.com/G1Joshi/Agent-Skills/main/skills/testing/xunit/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/xunit/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How xunit Compares

Feature / AgentxunitStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

xUnit .NET testing framework. Use for .NET testing.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# xUnit.net

xUnit.net is the modern, open-source unit testing tool for .NET (C#, F#, VB). It is chosen by Microsoft/dotnet for their own repositories.

## When to Use

- **.NET Core / .NET 5+**: The default template choice.
- **Modern Practices**: Enforces good habits (Isolation, Constructor Injection for fixtures).

## Quick Start

```csharp
using Xunit;

public class CalculatorTests
{
    [Fact]
    public void PassingTest()
    {
        Assert.Equal(4, Add(2, 2));
    }

    [Theory]
    [InlineData(3)]
    [InlineData(5)]
    [InlineData(6)]
    public void MyTheory(int value)
    {
        Assert.True(IsOdd(value));
    }
}
```

## Core Concepts

### Facts vs Theories

- `[Fact]`: A test that is always true. Invariant.
- `[Theory]`: A test that is true for a particular set of data (Parameterized).

### Fixtures (IClassFixture)

xUnit creates a new instance of the Test Class for _every_ test method (High isolation). To share context (like a DB connection), implement `IClassFixture<T>`.

### Assert

`Assert.Equal`, `Assert.Throws`, `Assert.Collection`.

## Best Practices (2025)

**Do**:

- **Use `xunit.runner.visualstudio`**: To run tests in VS/VS Code.
- **Use FluentAssertions**: xUnit's asserts are okay, but `value.Should().Be(4)` (FluentAssertions) is much more readable.
- **Constructor Injection**: Use the constructor for Setup, and `Dispose()` (IDisposable) for Teardown. xUnit abolished `[SetUp]` and `[TearDown]` attributes to force cleaner design.

**Don't**:

- **Don't use `Console.WriteLine`**: Use `ITestOutputHelper` injected in the constructor to log outputs.

## References

- [xUnit Documentation](https://xunit.net/)