如何测试RoutedUICommand?

时间:2014-01-14 19:56:09

标签: c# wpf unit-testing testing routed-commands

我有一个应用程序,我正在构建单元测试。对于某些操作,我使用ApplicationCommands(例如ApplicationCommands.New)。是否有一种简单的方法可以在单元测试中对路由的UI命令调用CanExecuteExecute?我想过实现一个模拟IInputElement,但这似乎很多工作。还有更好的方法吗?

[TestMethod]
public void NewDocument()
{
     Assert.IsTrue(ApplicationCommands.New.CanExecute(null, mockTarget));
     ApplicationCommands.New.Execute(null, mockTarget);
     Assert.IsTrue(workspace.OpenDocuments.Count == 1);
}

看起来这与这个问题非常相似why-does-my-command-canexecute-always-return-false-in-unit-test?有没有人知道在没有ui实际存在的情况下执行路由ui命令的方法?

我有命令和命令绑定,但我不知道如何创建命令源和命令目标。

1 个答案:

答案 0 :(得分:0)

您应该测试响应路由命令的实际ICommand类。如果这个路由命令仅由你的一个代码隐藏文件中的事件处理程序实现,那么我建议从这些文件中提取ICommand并进行测试。

测试命令是否正确路由不是您应该编写的单元测试。相反,它应该是可以使用coded UI testing via Visual Studio(或其他一些GUI测试框架)完成的集成测试。