В Unity вы можете использовать фреймворк Unity Test Runner для написания и запуска unit-тестов. Unity Test Runner основан на фреймворке NUnit, который является популярным фреймворком для написания unit-тестов в C#.
Вот как вы можете написать unit-тесты в Unity:
1. Откройте свой проект Unity.
2. Создайте папку для хранения тестов в своем проекте. !!!Она должна быть в корневой директории проекта!!! Обычно это папка с именем "Tests" или "EditorTests" в корневой директории проекта. Папка со скриптами и папка с Тестами не должны лежать в одной папке.
3. В Unity, перейдите к меню "Window" > "General" > "Test Runner". Это откроет окно Test Runner.
4. В окне Test Runner, выберите вкладку "EditMode" и нажмите на кнопку "Create PlayMode Test Assembly Folder" или "Create EditMode Test Assembly Folder", чтобы создать папку для тестов. Созданные папки будут иметь название "PlayModeTests" или "EditModeTests" соответственно.
5. В созданной папке для тестов, создайте новый C# скрипт и назовите его соответствующим образом, например "MyExampleTests".
6. Откройте этот скрипт в вашем редакторе кода и добавьте следующие пространства имен:
```csharp
using NUnit.Framework;
using UnityEngine;
using UnityEditor;
```
7. Удалите класс MyExampleTests и добавьте новый класс с атрибутом \[TestFixture\]. Внутри класса создайте методы тестирования с атрибутом \[Test\]. Например:
```csharp
[TestFixture]
public class MyExampleTests
{
[Test]
public void ExampleTest()
{
// Arrange
int expectedResult = 4;
// Act
int actualResult = 2 + 2;
// Assert
Assert.AreEqual(expectedResult, actualResult);
}
}
```
Далее, нужно создать **assembly Definition References** в папке со скриптами. Назвать его, к примеру, «application» и указать в **assembly Definition References**, которая находится в папке Test
https://medium.com/xrpractices/getting-started-with-the-unity-test-runner-246ec95238bc

<br>
8. Сохраните и вернитесь в Unity. В окне Test Runner должны появиться ваши тесты.
9. Нажмите на кнопку "Run All" в окне Test Runner, чтобы запустить все тесты. В случае успешного прохождения тестов, окно Test Runner покажет зеленую галочку рядом с каждым тестом. В случае неудачи, окно Test Runner покажет красный крестик и сообщение об ошибке.
Помимо базовых unit-тестов, вы также можете использовать интеграционные и сценарные тесты для тестирования взаимодействия различных компонентов и объектов в сцене Unity. Вам потребуется использовать пакет Unity Test Framework (доступен через Unity Package Manager) для создания таких тестов.
<br>
### Как написать тест так, чтобы если внутри теста вызывается fatal, то значит тест успешен
```csharp
public class FatalException : Exception
{
public FatalException(string message) : base(message)
{
}
}
```
<br>
2. Используйте класс исключения в вашем коде для вызова "fatal":
```csharp
public class MyClass
{
public void MyMethod()
{
// Какое-то условие, при котором вызывается "fatal"
if (true)
{
throw new FatalException("Fatal error occurred.");
}
}
}
```
<br>
В примере ниже, если метод MyMethod вызывает исключение FatalException, тест будет считаться успешным. Если метод не вызывает исключение, тест будет считаться неудачным.
```csharp
[TestFixture]
public class MyClassTests
{
[Test]
public void MyMethod_ThrowsFatalException_Test()
{
MyClass myClass = new MyClass();
Assert.Throws<FatalException>(() => myClass.MyMethod());
}
}
```
ChatGPT-4