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