单元测试 – TDD /单元测试Windows应用程序?
我很擅长做任何类型的测试,但我做了一点阅读,看起来这是一个很好的方法.我喜欢只需单击按钮并确保代码库稳定的想法.只要测试通过,就可以自由地进行攻击,这非常有趣.
但是,我的软件是基于Windows的程序.基本上它的作用是与用户桌面上的其他窗口进行交互,并根据特定条件在屏幕上移动它们.如果可以看到XX图像,请将该窗口移动到x / y坐标.如果在该窗口上按下F9键盘快捷键,请将其移至x2 / y2坐标.等等. 我不知道如何进行任何类型的测试.任何帮助表示赞赏. 解决方法
既然你提到你是初学者,我会在这里添加一个提醒,你需要小心你测试的内容.你希望测试你的逻辑,而不是windows.为此,您需要将您的关注点分成包含逻辑的类(或类),以及包含您使用的API的包装器(代理)的类 – 您不测试API.他们的工作直到你证明不是这样
您将需要测试您的类,并存根或模拟代理.在上面的示例中,例如,如果您使用Windows API命令来提供解决方案,则会将用于移动窗口的命令放入WindowsProxy类中,并模拟调用,验证是否对其进行了调用,但实际上并没有在测试中运行它们. 如果您使用的是.NET,Windows窗体或类似的框架,那么您将需要使用支持测试的模式,例如MVP.您需要编写测试来练习Presenter,同时进行存根或嘲弄View(您的窗口)和Model(您使用的任何API或域对象). 这是一个示例架构: public interface IView { ... } public class View : IView { private Presenter _p; View() { _p = new Presenter(this); ... } } public class Presenter { presenter IView _v; Presenter(IView view) { _v = view; } } 使用像Moq这样的模拟框架,您可以轻松地存根和模拟视图,并测试演示者(所有逻辑将驻留在哪里).使用Moq,您可以在模拟上使用测试集值下的类,然后验证它们的值(例如窗口的坐标). 希望这可以帮助.我花了很多时间开发基于Win-Form的自定义控件,并使用TDD开发它们.一旦掌握了它,这不是不可能的,甚至是困难的. 如果您需要进一步详细说明,请与我们联系. 阿萨夫. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |