Class 如何为singleton类编写nunit测试用例

Class 如何为singleton类编写nunit测试用例,class,testing,singleton,nunit,case,Class,Testing,Singleton,Nunit,Case,NAudioEngine是一个单例类,如何编写可以在以下代码段中执行: private bool CanAddNew(object parameter) { if (NAudioEngine.Instance.SelectionEnd.Milliseconds != 0) { return true; } return false; } [Test] public voi

NAudioEngine是一个单例类,如何编写可以在以下代码段中执行:

    private bool CanAddNew(object parameter)
    {
        if (NAudioEngine.Instance.SelectionEnd.Milliseconds != 0)
        {
            return true;
        }
        return false;
    }
   [Test]
    public void AddNewCommandMainVMTestTrue()
    {
        MainVm mainVM = new MainVm();
        RelayCommand command = (RelayCommand)mainVM.AddNewCommand;
        bool canAddNew = command.CanExecute(null);
        Assert.IsTrue(canAddNew);

    }

将单例值作为参数传递。使用该方法访问静态/单例值会使隔离测试变得困难,因为它与您可能无法为测试更改的内容相耦合。
   [Test]
    public void AddNewCommandMainVMTest()
    {
        NAudioEngine.Instance.OpenFile(WAV_FILE);
        NAudioEngine.Instance.SelectionBegin = new TimeSpan(0, 0, 0);
        NAudioEngine.Instance.SelectionEnd = new TimeSpan(0, 0, 0);
        MainVm mainVM = new MainVm();
        RelayCommand command = (RelayCommand)mainVM.AddNewCommand;
        bool canAddNew = command.CanExecute(mainVM);
        Assert.IsFalse(canAddNew);
    }