Unity3d 用NUnit测试单例的统一性

Unity3d 用NUnit测试单例的统一性,unity3d,testing,nunit,Unity3d,Testing,Nunit,我有一个Unity项目,它应该创建一个HoloLens应用程序。现在我想用NUnit测试我的一些代码。我创建了一些播放模式测试 public class Test { private GameObject empty; [SetUp] public void BeforEveryTest() { empty = new GameObject(); empty.AddComponent<MainController>()

我有一个Unity项目,它应该创建一个HoloLens应用程序。现在我想用NUnit测试我的一些代码。我创建了一些播放模式测试

public class Test
{
    private GameObject empty;

    [SetUp]
    public void BeforEveryTest()
    {
        empty = new GameObject();
        empty.AddComponent<MainController>();
    }
    // A Test behaves as an ordinary method
    [Test]
    public void MainControllerGetInstance()
    {
        Assert.IsNotNull(MainController.Instance);
    }
}
公共类测试
{
私有游戏对象为空;
[设置]
发布前的公共无效测试()
{
空=新游戏对象();
empty.AddComponent();
}
//测试的行为与普通方法相同
[测试]
public void MainControllerGetInstance()
{
Assert.IsNotNull(MainController.Instance);
}
}
这是我想测试的单身汉

public class MainController : Singleton<MainController>
{

[SerializeField]
private GameObject SomePref;

private void Start()
{
    SomePrefab.SetActive(true);
} 
}
公共类主控制器:单例
{
[序列化字段]
私有游戏对象SomePref;
私有void Start()
{
someprefact.SetActive(true);
} 
}
我得到一个错误,SomePref没有设置为对象的实例,但我无法设置它,因为它是一个私有seralizedfield。
现在什么是消除错误的好方法。我知道,我可以使用Resource.Load从MainController启动方法,但这是好方法吗?

很有意义,因为通常您会通过Inspector进行设置。。。如果您通过
AddComponent
创建这个新实例,那么显然它不会附加任何内容。您可能更喜欢使用
if(someprefact)someprefact.SetActive(true)
为了避免异常,因为您的测试主要是关于
实例
是否正确初始化,并且不需要
someprefact
按预期工作。如果确实需要,您可以为其分配任何内容。例如
var预置=新游戏对象(“测试预置”);empty.GetComponent().SomePref=prefact
但这至少需要
MainController
类中的
public
,或者
SomePref
或者设置它的方法。我想唯一的选择就是反思。或者如前所述,如果您的测试不需要它,请不要初始化它