C# 如何为以下内容编写nunit测试用例

C# 如何为以下内容编写nunit测试用例,c#,unit-testing,nunit,C#,Unit Testing,Nunit,如何为以下代码段编写Nunit测试用例? CreateFolder()是在树状视图中选定文件夹下创建新文件夹的函数,CanCreateFolder()是检查是否可以创建文件夹的函数 public ICommand CreateFolderCommand { get { if (createFolderCommand == null) { createFolderCommand = new RelayCommand(Creat

如何为以下代码段编写Nunit测试用例?
CreateFolder()
是在树状视图中选定文件夹下创建新文件夹的函数,
CanCreateFolder()
是检查是否可以创建文件夹的函数

public ICommand CreateFolderCommand
{
    get
    {
        if (createFolderCommand == null)
        {
            createFolderCommand = new RelayCommand(CreateFolder, CanCreateFolder);
        }
        return createFolderCommand;
    }
}

private bool CanCreateFolder(object parameter)
{
    if (parameter is FolderItem)
    {
        return true;
    }
    return false;
}
#endregion
在下面的测试用例中,我应该添加哪些内容

[Test]
public void CreateFolderCommandMainVMTest()
{
    MainVm mainVM = new MainVm();

    RelayCommand command = (RelayCommand)mainVM.CreateFolderCommand;
    bool canCreateFolder = command.CanExecute(mainVM);
    Assert.Equals(canCreateFolder, true);
}

CanExecute
正在寻找一个
FolderItem
,但在测试中,您将视图模型作为参数传递。您需要测试是否可以使用
FolderItem
实例执行

鉴于示例中没有给出有关该类型的信息,下面假设
FolderItem
具有默认构造函数

[Test]
public void CreateFolderCommandMainVMTest() {
    //Arrange
    var mainVM = new MainVm();
    var foldeItem = new FolderItem();
    var command = (RelayCommand)mainVM.CreateFolderCommand;
    var expected = true;

    //Act
    bool canCreateFolder = command.CanExecute(folderItem);

    //Assert
    Assert.Equals(expected, canCreateFolder);
}

鉴于OP

CanExecute
中提供的示例正在查找一个
FolderItem
,但在测试中,您将视图模型作为参数传递,因此上述测试应该通过。您需要测试是否可以使用
FolderItem
实例执行

鉴于示例中没有给出有关该类型的信息,下面假设
FolderItem
具有默认构造函数

[Test]
public void CreateFolderCommandMainVMTest() {
    //Arrange
    var mainVM = new MainVm();
    var foldeItem = new FolderItem();
    var command = (RelayCommand)mainVM.CreateFolderCommand;
    var expected = true;

    //Act
    bool canCreateFolder = command.CanExecute(folderItem);

    //Assert
    Assert.Equals(expected, canCreateFolder);
}

以上应该通过OP中提供的示例,当我运行测试时,我得到以下消息:Result StackTrace:at NUnit.Framework.Assert.Equals(对象a,对象b),Result消息:System.invalidoOperationException:Assert.Equals不应用于断言。因此使用Assert.IsTrue(canCreateFolder);当我运行测试时,我得到以下消息:Result StackTrace:at NUnit.Framework.Assert.Equals(对象a,对象b),结果消息:System.invalidoOperationException:Assert.Equals不应用于断言。因此使用Assert.IsTrue(canCreateFolder);而且效果很好。