【发布时间】:2012-04-20 16:11:23
【问题描述】:
我在 silverlight 应用程序的 viewModel 中有类似以下内容:
public void OnSelectedItemChanged(TreeView treeView)
{
if (treeView.SelectedItem is Customer)
{
var customer = treeView.SelectedItem as Customer;
if (customer.IsSpecial)
{
treeView.SelectItem(specialNode);
...
}
}
不要在意逻辑(仅用于演示)。该应用程序工作正常。我的问题与为此方法编写单元测试严格相关。我似乎无法创建一个测试工具来使用我可以成功执行 SelectedItem 或 SelectItem 之类的事情。换句话说,我需要在我的设置中做这样的事情。
TreeView tv = new TreeView();
var item = new TreeViewItem();
tv.ItemsSource = new List<object> { item };
tv.SelectItem(item); // does not work
有什么方法可以测试这个方法吗?
【问题讨论】:
-
你能写自动化 UI 测试吗?
-
这是在 Silverlight、WPF 等中使用 MVVM 的一大原因——可测试性。使用 UI 元素绑定到的纯代码视图模型,我们可以测试所有逻辑,而无需考虑 UI 元素。
-
请允许我重新表述这个问题 - 在我的视图模型中,我有一个视图绑定到的 ICommand(使用 SelectedItemChanged 事件作为源)。现在如何测试命令?该命令是我上面显示的代码。
标签: c# silverlight unit-testing tdd