[英]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.