WPF:使用ViewModels编写烟雾测试

WPF:使用ViewModels编写烟雾测试,wpf,mvvm,ui-automation,smoke-testing,Wpf,Mvvm,Ui Automation,Smoke Testing,我正在考虑为我们的WPF应用程序编写烟雾测试。我面临的问题是:我们应该使用UI自动化(或其他创建UI脚本的技术),还是直接使用ViewModels(在创建所有ViewModels以使单元测试更容易之后)就足够了 如果视图模型与视图正确分离,那么没有理由不能为视图模型编写单元测试 冒烟测试是一种实际启动应用程序并检查其工作情况的测试,而(对于具有UI的应用程序)UI自动化是实现这一点的方法。如果视图模型与视图正确分离,则没有理由不为视图模型编写单元测试 冒烟测试是一种实际启动应用程序并检查其工作情

我正在考虑为我们的WPF应用程序编写烟雾测试。我面临的问题是:我们应该使用UI自动化(或其他创建UI脚本的技术),还是直接使用ViewModels(在创建所有ViewModels以使单元测试更容易之后)就足够了

如果视图模型与视图正确分离,那么没有理由不能为视图模型编写单元测试


冒烟测试是一种实际启动应用程序并检查其工作情况的测试,而(对于具有UI的应用程序)UI自动化是实现这一点的方法。

如果视图模型与视图正确分离,则没有理由不为视图模型编写单元测试


冒烟测试是一种实际启动应用程序并检查其工作情况的测试,而(对于具有UI的应用程序)UI自动化是实现这一点的方法。

我们过去常常直接使用ViewModels编写集成测试(如果愿意,冒烟测试)。这是可行的,但我们必须处理一些有趣的线程问题:例如,如果ViewModel导致显示消息框,会发生什么情况?测试如何关闭消息框?我们必须确保应用程序在一个线程上运行,测试在另一个线程上运行


我们现在转向UIAutomation,这些问题消失了,因为您的测试和应用程序显式地运行在两个独立的进程中。这涉及到一些学习过程,但UIAutomation并不像它第一次出现时那么可怕:我已经编写了一个可以帮助您入门的方法-按照链接进行操作,您还可以找到一些辅助方法,这些方法在某种程度上驯服了UI自动化API。

我们过去常常编写集成测试(如果您愿意,可以编写冒烟测试)直接使用ViewModels。这是可行的,但我们必须处理一些有趣的线程问题:例如,如果ViewModel导致显示消息框,会发生什么情况?测试如何关闭消息框?我们必须确保应用程序在一个线程上运行,测试在另一个线程上运行

我们现在转向UIAutomation,这些问题消失了,因为您的测试和应用程序显式地运行在两个独立的进程中。这涉及到一点学习过程,但UIAutomation并不像它第一次出现时那样可怕:我已经编写了一个可以帮助您入门的帮助程序-按照链接进行操作,您还可以找到一些帮助程序方法,这些方法在某种程度上驯服了UI自动化API