2017-03-06 39 views
1

如何为以下代码片段编写Nunit测试用例? CreateFolder()是在选定文件夹下的树形视图中创建新文件夹的功能,CanCreateFolder()是用于检查是否可以创建文件夹的功能。如何为以下内容编写nunit测试用例

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); 
} 

回答

0

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提供的示例

+0

当我运行测试,我获得以下信息: 结果堆栈跟踪:\t 在NUnit.Framework.Assert.Equals(对象A,对象b) at 结果消息:\t System.InvalidOperationException:Assert.Equals不应用于断言。所以使用Assert.IsTrue(canCreateFolder);它工作正常。 –

相关问题