У меня есть два файла в проекте Unity3d.Одним из них является тестовый скрипт, который запускается в режиме редактирования.Другой - это один класс со статическими функциями, которые я хотел бы вызвать из тестовых сценариев.
вот мой тестовый сценарий:
using UnityEngine;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
public class NewTestScript
{
[Test]
public void TestAnotherStaticFunction()
{
int a = NewBehaviourScript.FunctionUnderTest(1);
int b = 1;
// Use the Assert class to test conditions.
Assert.IsTrue(a == b);
}
}
вот моя тестируемая функция:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
/// <summary>
/// the stupidest function in the world,
/// used to verify tests.
/// </summary>
public static int FunctionUnderTest(int a)
{
return a;
}
}
Это дает мне ошибку от компилятора Unity (я не строю вне Unity):
Assets / TestS / NewTestScript.cs (12,17): ошибка CS0103: Имя `NewBehaviourScript 'не существует в текущем контексте
Они работают в режиме редактирования.
Я попытался добавить и удалить пространство имен SuperTestNameSpace из тестируемой функции и вызывающего кода.
Я пытался добавить / удалить файлы из файла .asmdef , который был автоматически сгенерирован с помощью unity, хотя это обычно приводит к другим ошибкам компиляции.
Мой предыдущий опыт модульного тестирования в основном был в Visual Studio или VSCode, и я стараюсь, чтобы мой опыт тестирования unity3d соответствовал моему предыдущему опыту среды тестирования.
Существуют ли принципиально ограниченные функциональные возможности в тестах режима редактирования или я что-то упускаю из строя?
Дальнейшее уточнение используемых сборок.Похоже, что здесь находятся две сборки: Assembly-CSharp.dll содержит мой тестируемый код и TestS.dll содержит мой тестовый код.Я считаю, что мои вопросы сводятся к следующему: как добавить ссылку из сборки TestS.dll в Assembly-CSharp.dll .Я бы знал, как это сделать в Visual Studio (либо через контекстное меню в VS, либо непосредственно редактируя файл csproj), однако я не вижу, как это сделать в Unity3d.Любое редактирование, которое я делаю в файле csproj, часто перезаписывается единицей, и хотя в инспекторе есть раздел «ссылки» (см. Рисунок), я не могу добавить Assembly-CSharp.dll в качестве ссылки.
Это настройки инспектора для TestS.asmdef.Хотя есть возможность добавлять ссылки, я не могу добавить ссылку на Assembly-CSharp.dll, в которой живет мой тестируемый код.