Creating automated test projects

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 Kentico solution. You can have any number of test projects in the solution.

The following steps describe how to create test projects using the Kentico CMS.Tests library, based on either NUnit or the Microsoft unit test framework.

NUnit

  1. Install the NUnit Test Adapter Visual Studio extension.

  2. Open your Kentico solution in Visual Studio (using the WebSite.sln or WebApp.sln file).

  3. Add a new project to the solution using the Class Library project template.

    • Important: The name of the project must end with the .Tests suffix.
  4. Add references to the following libraries located in the Kentico solution’s Lib directory:

    • CMS.Base.dll
    • CMS.DataEngine.dll
    • CMS.Tests.dll
    • nunit.framework.dll
  5. Add references to the project containing the code that you wish to test and any other required projects.

Microsoft unit test framework

  1. Open your Kentico solution in Visual Studio (using the WebSite.sln or WebApp.sln file).

  2. Add a new project to the solution using Unit Test Project template (in the New Project dialog box, expand the Installed node, choose the language that you want to use for your test project, and then choose Test).

    • Important: The name of the project must end with the .Tests suffix.
  3. Add references to the following libraries located in the Kentico project’s Lib directory:

    • CMS.Base.dll
    • CMS.DataEngine.dll
    • CMS.Tests.dll
  4. Add references to the project containing the code that you wish to test and all other required projects.

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

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: