2017-03-06 74 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);它工作正常。 –

相關問題