簡體   English   中英

“ObservableCollection”方法的單元測試

[英]Unit test for "ObservableCollection" method

我是新來的,希望你能幫助我。 我有一個 WPF 應用程序,這是獲取對象(在本例中為 TreeView)和 ItemSelectionChangedEventArgs(我在其中捕獲當前文件夾)的方法。

public static ObservableCollection<Folder> OnSelectionChanged(object sender, ItemSelectionChangedEventArgs itemSelection)
    {
        if (sender == null)
        {
            throw new ArgumentNullException("Can't be null", nameof(sender));
        }
        if (itemSelection == null)
        {
            throw new ArgumentNullException("Can't be null", nameof(itemSelection));
        }

        var selected = itemSelection.AddedItems[0] as Folder;

        DirectoryInfo dirInfo = new DirectoryInfo(selected.FullName.ToString());
        ObservableCollection<Folder> directories = new ObservableCollection<Folder>();

        directories = AddDirectoryInfo(directories, dirInfo);
        directories = AddFileInfo(directories, dirInfo);
        
        return directories;
    }

我需要為這個方法編寫單元測試,但是我嘗試初始化參數以傳輸到這個方法中我有例外。

private readonly string _folderName = "C:\\NewTestFolder";
[TestMethod()]
    public void OnSelectionChangedTest()
    {
        var sender = new SfTreeView() { Name = "treeSize" };

       var itemSelection = new ItemSelectionChangedEventArgs()
        {
            AddedItems = { new Folder()
            {
                FullName = _folderName,
                HasChildrenNodes = false,
                Modified = DateTime.Now.ToString(),
                Name = "NewTestFolder",
                Size = "0",
                Type = "Folder"
            } },
            RemovedItems = { new Folder() { FullName = "" } }
        };


        var result = FolderView.OnSelectionChanged(sender, itemSelection);
    }

發件人給出錯誤:System.InvalidOperationException:'調用線程應該是 STA,因為大多數 UI 組件都需要它。'

itemSelection 給出錯誤:System.NullReferenceException:“對象引用未設置為對象的實例。”

也許我做錯了什么,這些傳遞給方法的參數應該以其他方式設置。

首先,感謝@CharlesMager 的回答,我真的錯過了我不需要“發件人”參數的事實。

對於這種情況,接下來它幫助了我,我創建了新類 ItemSelectionChangedEventArgs 並從當前基本類繼承了他,然后我重新定義了變量 AdditionalItems 和 RemoveItems,因為在基本類中它們具有“內部集”,然后我初始化了新列表。

AddedItems = new List<object>()
{ 
    new Folder()
    {
        FullName = _folderName,
        HasChildrenNodes = false,
        Modified = DateTime.Now.ToString(),
        Name = "NewTestFolder",
        Size = "0",
        Type = "Folder"
    } 
},
RemovedItems = new List<object>()
{ 
    new Folder() 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM