我有一个应用程序,我正在为其构建单元测试。 对于某些操作,我使用ApplicationCommands
(例如。 ApplicationCommands.New
)。 有没有一种简单的方法可以在单元测试中调用CanExecute
并Execute
路由的 UI 命令? 我想过实现一个模拟IInputElement
,但这似乎需要做很多工作。 有没有更好的方法?
[TestMethod]
public void NewDocument()
{
Assert.IsTrue(ApplicationCommands.New.CanExecute(null, mockTarget));
ApplicationCommands.New.Execute(null, mockTarget);
Assert.IsTrue(workspace.OpenDocuments.Count == 1);
}
看起来这与这个问题非常相似,为什么我的命令可以执行总是返回错误单元测试?有谁知道一种在没有 ui 实际存在的情况下执行路由 ui 命令的方法?
我有命令和命令绑定,但我不知道如何创建命令源和命令目标。
您应该测试响应路由命令的实际ICommand
类。 如果此路由命令仅由其中一个代码隐藏文件中的事件处理程序实现,那么我建议从这些文件中拉出一个ICommand
并进行测试。
命令是否正确路由不是您应该编写的单元测试。 相反,这应该是一个集成测试,可以通过Visual Studio(或其他一些GUI测试框架)进行编码的UI测试。