---
title: Creating automated test projects
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

Automated tests often mirror the structure of the tested code. For example, we recommend creating at least one test project for every custom project that you have in your Xperience solution. You can have any number of test projects in the solution.

The following steps describe how to create test projects using the Xperience **CMS.Tests** library:

1. Open your Xperience solution in Visual Studio.
2. Add a new project to the solution and select the **Class Library** project template.

   - **Important**: The name of the project must end with the **.Tests** suffix.
3. Right-click the test project in the **Solution Explorer** and select **Manage NuGet Packages**.
4. Search for the **Kentico.Xperience.Libraries.Tests** package.
5. Install the _Kentico.Xperience.Libraries.Tests_ version that matches the hotfix version of your Xperience instance (with all dependencies).

   > **Note:** **Maintaining Kentico.Xperience.Libraries.Tests**
   >
   > If you [upgrade or hotfix](https://docs.kentico.com/13/external-utilities/kentico-xperience-hotfix-and-upgrade-utility/upgrading-and-hotfixing-an-instance.md) the related Xperience project to a newer version, you also need to update the _Kentico.Xperience.Libraries.Tests_ NuGet package to a matching version in your test projects.
6. We also recommend installing the [NUnit3TestAdapter](https://www.nuget.org/packages/NUnit3TestAdapter/) NuGet package. The package is required to run NUnit tests.
   - Alternatively, you can install the [NUnit 3 Test Adapter](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.NUnit3TestAdapter) Visual Studio extension.
7. Add references from the test project to all projects whose code you wish to test, and any other required project.
8. Rebuild the solution.

Now you can write test classes inside the new test project. You can use the Visual Studio Test Explorer to execute your tests.

```csharp title="NUnit test class example"

using CMS.Tests;
using NUnit.Framework;

namespace UnitTestExample
{
    [TestFixture]
    public class MyTests : UnitTests
    {
        [SetUp]
        public void MyTestSetUp()
        {
            // Setup executed before each test in this test class
        }

        [Test]
        public void MyTest()
        {
            // Test execution
        }
    }
}

```

For additional information about writing tests, see the following pages:

- [Faking Info and Provider objects in unit tests](https://docs.kentico.com/13/custom-development/writing-automated-tests/faking-info-and-provider-objects-in-unit-tests.md)
- [Creating integration tests with a connection string](https://docs.kentico.com/13/custom-development/writing-automated-tests/creating-integration-tests-with-a-connection-string.md)
- [Creating isolated integration tests](https://docs.kentico.com/13/custom-development/writing-automated-tests/creating-isolated-integration-tests.md)
