我很擅长做任何类型的测试,但我做了一点阅读,看起来这是一个很好的方法.我喜欢只需单击按钮并确保代码库稳定的想法.只要测试通过,就可以自由地进行攻击,这非常有趣. 但是,我的软
但是,我的软件是基于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开发它们.一旦掌握了它,这不是不可能的,甚至是困难的.
如果您需要进一步详细说明,请与我们联系.
阿萨夫.