#unit-testing #unity3d #macros
Вопрос:
Я ищу способ сделать методы доступными только в сценариях модульного тестирования.
public class MyClass
{
public Data MyData { get; }
internal MyClass()
{
// Complex code setting MyData
}
#if UNITY_MACROS
public MyClass(MyData data)
{
MyData = data;
}
#endif
}
Необходимо, чтобы общедоступный конструктор был доступен только в сценариях модульного тестирования и сборке.
Я попытался изучить ограничения определения в тестовой сборке, но, вероятно, я неправильно использую, так как не вижу никакой разницы.
Ответ №1:
Что вам нужно, так это использовать атрибут InternalsVisibleTo (MS docs). Вы можете добавить следующую строку либо в исходный файл класса, либо в отдельный файл AssemblyInfo.cs, который вы можете создать в той же папке, что и файл asmdef:
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("MyUnitTestAssembly")]
В этом случае вы можете оставить MyClass(данные MyData) внутренними.