Table of Contents

What NuGet Packages Should I Use? xUnit.net v2

xUnit.net v2 ships with many NuGet packages. This guide helps you understand which NuGet packages you should use in your projects.

If you don't know where to start, try starting with a reference to xunit.

Version selector: Stable (NuGet) Latest CI (feedz.io)

Packages for writing tests

Packages used by developers who are writing unit tests.

xunit

This is the package that will most typically be used by unit test authors. It brings in references to xunit.core (which contains the unit testing framework), xunit.analyzers (which contains source code analyzers), and xunit.assert (which contains the class you use to write assertions).

Latest
Introduced 2.0
Depends On xunit.assert, xunit.analyzers, xunit.core

xunit.assert

This package contains the xUnit.net assertion library (i.e., the Assert class).

This is a separate NuGet package, because some developers wish to use the xUnit.net framework and test runners, but with a different assertion library.

Note

If you want to extend the Assert class, you should consider using the xunit.assert.source package instead.

Latest
Introduced 2.0
Targets netstandard1.1

xunit.analyzers

This package contains the xUnit.net source code analyzers.

This library provides code analysis and code fixers for common issues that are encountered both by test authors and extensibility authors. It's based on the .NET Compiler Platform ("Roslyn") analyzers which can provide real-time source code analysis inside IDEs (including Visual Studio and Visual Studio Code), as well as compile-time source code analysis.

Latest
Introduced 2.3

xunit.core

This package contains the core types for the test framework (i.e., FactAttribute).

Referencing this package includes xunit.core.dll and also copies (but does not reference) the appropriate execution libraries (xunit.execution.*.dll) which are required to support discovering and executing tests.

Note

If you wish to use xunit.core.dll for extensibility purposes (for example, to write your own reusable theory data providers), you should reference xunit.extensibility.core instead.

Latest
Introduced 2.0
Targets netstandard1.1
Depends on xunit.extensibility.core

Packages for running tests

Packages used by developers who are running unit tests.

xunit.runner.console

This package contains the console test runner. This runner is capable of running .NET Framework projects from xUnit.net v1 and v2.

Note

To run .NET Core projects from the command line (with dotnet test), please reference xunit.runner.visualstudio instead.

Latest
Introduced 2.0
Targets net452

xunit.runner.msbuild

This package contains the MSBuild test runner. This runner is capable of running .NET Framework projects from xUnit.net v1 and v2. When added, it automatically references the xunit MSBuild target, which can be used in your project file.

Latest
Introduced 2.0
Targets net452

xunit.runner.visualstudio

This package contains the adapter to run tests via VSTest. This runner is capable of running .NET Framework projects from xUnit.net v1/v2/v3, and .NET/.NET Core projects from xUnit.net v2/v3. (Support for v3 requires using runner version 3.0 or later.)

The VSTest framework is used by several 3rd party runners, including:

  • Visual Studio (via Test Explorer)
  • Visual Studio Code (via the Testing panel)
  • dotnet test and dotnet vstest
  • vstest.console.exe
Note

The latest versions of this package impose a much newer minimum target framework version than Core Framework v2. To test projects that target older framework versions, please use an older version of this package which aligns with your needs.

Latest
Introduced 2.0
Targets net472, net8.0

Packages for extending xUnit.net

Packages used by developers who are extending xUnit.net and/or creating unit test runners.

xunit.abstractions

This package is an internal dependency of the test framework, the platform specific execution DLLs (xunit.execution.*.dll) and the runner utility libraries. It defines a stable set of interfaces that these components use to communicate with each other. As long as the interfaces do not change, each component can be modified without requiring any changes or rebuilds of the other components. This allows for a version independent runner API.

You usually won't need to directly reference this package.

Latest
Introduced 2.0
Targets net35, netstandard1.0

xunit.assert.source

This package contains the xUnit.net assertion library (i.e., the Assert class) in source form. The Assert class is a partial class, which allows developers to write additional methods available directly from Assert.

When you have multiple unit test libraries in your project, it is common practice to import this package into a "test utility" library where you write all your custom assertions, and then reference that "test utility" library from your unit test projects.

For more information, see the xunit/assert.xunit README

Latest
Targets netstandard1.1 with C# 6 or later
Introduced 2.0

xunit.extensibility.core

This package contains xunit.core.dll. It is intended to be used by developers who wish to reference this DLL for extensibility purposes, such as writing your own theory data provider.

This package is referenced by xunit.core. It differs in that it does not include or copy the platform specific execution DLLs (xunit.execution.*.dll), and does not include the custom MSBuild activities required by unit test projects.

Latest
Introduced 2.0
Targets net452, netstandard1.1
Depends on xunit.abstractions

xunit.extensibility.execution

This package contains the execution libraries for all supported target platforms (xunit.execution.*.dll). It is intended to be used by developers who wish to reference this DLL for extensibility purposes, such as creating custom test discovery and execution.

It differs from the xunit.core package in that it adds a reference to the platform specific execution DLL, rather than simply copying to the project's output folder.

Latest
Introduced 2.0
Targets net452, netstandard1.1
Depends on xunit.extensibility.core

xunit.runner.utility

This package contains the runner utility libraries for all supported target platforms (xunit.runner.utility.*.dll). It is intended to be used by developers who are writing their own test runners, and provides a version independent API for discovering and executing tests.

The libraries contained here are both backward and forward compatible for all xUnit.net v1 and v2 test projects.

Latest
Introduced 2.0
Targets net35, net452, netstandard1.1, netstandard1.5, netcoreapp1.0
Depends on xunit.abstractions

Retired packages

dotnet-xunit

This package was retired as of 2.4 Beta 2. .NET/.NET Core users should use xunit.runner.visualstudio and the dotnet test command line.

xunit.execution

This package was renamed to xunit.extensibility.execution just before 2.0 shipped.

xunit.extensions

This package was part of xUnit.net v1, and is no longer shipped as part of xUnit.net. Some of the features of this package were integrated into the core framework, and others were moved to the xUnit.net samples project.

xunit.runner.aspnet

This package was retired as of 2.1 Beta 2.

xunit.runner.devices

This package was retired as of 2.5.25.

xunit.runner.dnx

This package was retired as of 2.3.

xunit.runner.visualstudio.win8

This functionality was rolled into xunit.runner.visualstudio.

xunit.runner.visualstudio.wpa81

This functionality was rolled into xunit.runner.visualstudio.

xunit.runners

This package was part of xUnit.net v1, and is no longer shipped as part of xUnit.net. It has been replaced with two new packages: xunit.runner.console and xunit.runner.msbuild.