# Writing tests

> Write Unity tests for Edit mode or Play mode code with the Unity Test Framework C# APIs.

Use the Unity Test Framework APIs to write tests specially adapted to the unique features of the Unity Editor and runtime.

| **Topic**                                                                                                                                                 | **Description**                                                                                                                                |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **[Performing actions before and after tests](/engine/6000.7/manual/scripting/test-framework-introduction/writing-tests/before-and-after-tests.md)**      | Perform pre-test setup and post-test cleanup to ensure your tests run in the right conditions.                                                 |
| **[Asserting and comparing](/engine/6000.7/manual/scripting/test-framework-introduction/writing-tests/asserting-and-comparing.md)**                       | Perform assertions with constraints and compare the values of custom Unity types in your tests.                                                |
| **[Yield instructions for the Editor](/engine/6000.7/manual/scripting/test-framework-introduction/writing-tests/reference-custom-yield-instructions.md)** | Yield instructions for the Unity Editor from your Edit mode tests, using either a set of pre-defined common instructions or defining your own. |
| **[Writing parameterized tests](/engine/6000.7/manual/scripting/test-framework-introduction/writing-tests/reference-tests-parameterized.md)**             | Write parameterized tests for data-driven testing.                                                                                             |
| **[Writing asynchronous tests](/engine/6000.7/manual/scripting/test-framework-introduction/writing-tests/reference-async-tests.md)**                      | Write asynchronous tests with the .NET Task asynchronous programming model.                                                                    |

## Additional resources

* [Running tests](/engine/6000.7/manual/scripting/test-framework-introduction/running-tests.md)
* [Unity Test Framework learning materials](/engine/6000.7/manual/scripting/test-framework-introduction/overview.md)
