What NuGet Packages Should I Use?

xUnit.net 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) Pre-Release (NuGet) Latest CI (MyGet)
📎Packages for writing 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).

Introduced: 1.7.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.

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

Introduced: 2.0.0
Targets: .NET Standard 1.1+
Depends on: None
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.

Introduced: 2.3.0
Depends on: None
xunit.core

This package contains the core types for the test framework (f.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.

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.

Introduced: 2.0.0
Targets: .NET Standard 1.1+
Depends on: xunit.extensibility.core
📎Packages for running 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.

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

Introduced: 2.0.0
Supports: .NET Framework 4.5.2+
Depends on: None
xunit.runner.devices

This package contains the devices runner. This runner can execute tests on physical and virtualized devices (iOS and Android via Xamarin, and UWP) from xUnit.net v2.

To run UWP projects from within Visual Studio, please reference xunit.runner.visualstudio instead.

Introduced: 2.0.0
Supports: UWP 10.0+, Xamarin iOS 1.0+, Mono Android 8.1+
Depends on: None
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.

Introduced: 2.0.0
Supports: .NET Framework 4.5.2+
Depends on: None
xunit.runner.visualstudio

This package contains the VSTest runner. This runner is capable of running .NET Framework projects from xUnit.net v1 and v2, and .NET Core and UWP projects projects from xUnit.net v2.

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

  • Visual Studio (via Test Explorer)
  • Visual Studio Code (via .NET Test Explorer)
  • dotnet test and dotnet vstest
  • vstest.console.exe

Introduced: 2.0.0
Supports (v1 tests): .NET Framework 2.0+
Supports (v2 tests): .NET Framework 4.5.2+, .NET Core 1.0, UWP 10.0+
Depends on: None
📎Packages for developers extending xUnit.net
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.

Introduced: 2.0.0
Targets: .NET Framework 3.5+, .NET Standard 1.0+
Depends on: None
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.

Introduced: 2.0.0
Depends on: None
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 used by xunit.core. It differs in that it does not include or copy the platform specific execution DLLs (xunit.execution.*.dll).

Introduced: 2.0.0
Targets: .NET Framework 4.5.2+, .NET Standard 1.1+
Depends on: xunit.abstractions
xunit.extensibility.execution

This package contains the execution libraries for all Supports (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.

Introduced: 2.0.0
Targets: .NET Framework 4.5.2+, .NET Standard 1.1+
Depends on: xunit.extensibility.core
xunit.runner.utility

This package contains the runner utility libraries for all Supports (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 v1 and v2 xUnit.net tests.

Introduced: 2.0.0
Targets: .NET Framework 3.5+, .NET Standard 1.1+, .NET Core 1.0+, UWP 10.0+
Depends on: xunit.abstractions
📎Retired Packages
dotnet-xunit

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

xunit.execution This package was renamed to xunit.extensibility.execution as of 2.0 RC1.
xunit.extensions

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

For more information, see upgrading xunit.extensions.

xunit.runner.aspnet This package was retired as of 2.1 Beta 2.
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.x, 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.

Copyright © .NET Foundation. Contributions welcomed at https://github.com/xunit/xunit.github.io.