General introduction to Unity Test Framework
Understand Unity Test Framework's core features through general examples. Each exercise in this course is accompanied by a sample project and corresponding solution, which you can import from the Package Manager window.
Read time 3 minutesLast updated 10 days ago
Welcome to the Unity Test Framework general introduction course.
This course consists of different exercises to help you learn fundamental Unity Test Framework concepts through practical examples. Each exercise has a Learning Objectives section to help you identify the skills you will learn. The exercises are grouped thematically, and their difficulty varies.
After completing an exercise, you can check your solution against the one provided. Note that many of the exercises can be solved in several possible ways.
Import samples
Project files for each exercise and its accompanying solution are provided as samples with the Unity Test Framework package. To import an exercise or solution to your Unity Editor:
- Go to Window > Package Manager and, in the packages list view, selct Unity Test Framework.
- In the package details view, find the Samples section.
- Find the exercise or solution you want to import and click the import button.

The Package Manager window with the expanded list of package samples available for import.
Course outline
Topic | Description |
|---|---|
| Running a test in a Unity project | Set up a simple Unity project with a test assembly and tests and run them from the Test Runner window. |
| Arrange, act, assert | Use the core unit testing principle of AAA (Arrange, Act, Assert) to structure your unit tests. |
| Semantic test assertion | Use |
| Custom comparison | Use the Unity Test Framework's custom equality comparers to check for value equality of Unity types. |
| Asserting logs | Test and verify code that writes to the console log. |
| Setup and teardown | Use the NUnit attributes |
| Play mode tests | Create and run Play mode tests. |
| Play mode tests in a player | Run Play mode tests in a standalone platform Player. |
| Using the UnityTest attribute | Use the |
| Long-running tests | Write long-running tests that can instruct the Editor to wait for a defined period of time. |
| Scene-based tests | Test content that is stored in a scene. |
| Setup and cleanup at build time | Perform work before and after the Player build phase. |
| Domain reload | Invoke and wait for domain reload from your tests. |
| Preserve test state | Make data in your tests survive domain reloads using serialization. |
| Test cases | Work with NUnit's |
| Custom attributes | Implement custom NUnit attributes, which can be used to alter test execution. |
| Running tests programmatically | Run tests from code using the TestRunnerAPI. |