我已经继承了一个功能强大但很麻烦的WPF MVVM应用程序。令我烦恼的是,几乎没有任何单元测试使MVVM的采用毫无意义。所以我决定添加一些。重构WPF MVVM以提高可测试性
抓住了低垂的果实后,我开始遇到麻烦。有很多高度相互依赖的代码,特别是在视图中使用的属性和方法内部。例如,一次呼叫引发了一系列“财产变化”事件,这反过来引发了其他呼叫等等。
这使得测试非常困难,因为您必须编写大量模拟并设置大量属性来测试单个函数。当然,你只需要每节课做一次,然后在每次测试中重新使用你的模拟和ViewModel。但这仍然是一种痛苦,而且这让我感觉这是错误的做法。当然,尝试打破代码并使其更加模块化会更好。
我不知道在MVVM中有多现实。而且我处于一个恶性循环,因为没有好的测试,我担心通过重构来编写好的测试来打破构建。它是WPF MVVM的事实是一个进一步的关注,因为没有任何事情跟踪View和ViewModel之间的相互依赖性 - 一个不小心的名称更改可能会彻底破坏某些东西。
我正在C#VS2013上工作,抓住了ReSharper的试用版,看看它是否有帮助。使用起来很有趣,但目前还没有。我的单元测试经验并不广泛。
那么 - 我该如何合理,有条理和安全地处理这个问题?我怎样才能使用我现有的工具(并查看其他工具)来提供帮助?