我对测试完全是新手,但我已经读了一些相关内容,发现这是一个很好的方法。我喜欢只需点击按钮就能确保代码库稳定的想法。只要测试通过,就可以自由地进行修改,这非常有趣。
然而,我的软件是基于Windows的程序。它主要与用户桌面上的其他窗口进行交互,并根据某些条件将它们移动到屏幕上的不同位置。例如,如果XX图像可见,则将该窗口移动到x/y坐标;如果在该窗口上按下F9键盘快捷键,则将其移动到x2/y2坐标等。
我不知道如何进行任何类型的测试。希望能得到帮助。
我对测试完全是新手,但我已经读了一些相关内容,发现这是一个很好的方法。我喜欢只需点击按钮就能确保代码库稳定的想法。只要测试通过,就可以自由地进行修改,这非常有趣。
然而,我的软件是基于Windows的程序。它主要与用户桌面上的其他窗口进行交互,并根据某些条件将它们移动到屏幕上的不同位置。例如,如果XX图像可见,则将该窗口移动到x/y坐标;如果在该窗口上按下F9键盘快捷键,则将其移动到x2/y2坐标等。
我不知道如何进行任何类型的测试。希望能得到帮助。
既然您提到您是一个初学者,我在这里要提醒您,您需要小心测试的内容。您希望测试的是您的逻辑,而不是窗口。为了做到这一点,您需要将您的关注点分成一个包含您的逻辑的类(或类)和包含您使用的API的包装器(代理)的类 - 您不会测试API。它们可以工作,直到您证明它们不能。
您将想要测试您的类,并存根或模拟代理。在上面的示例中,例如,如果您正在使用Windows API命令来传递您的解决方案,您将把移动窗口的命令放入WindowsProxy类中,并模拟调用,验证调用是否进行,但实际上不在测试中运行它们。
如果您正在使用.NET和Windows-Forms或某些类似的框架,则需要使用支持测试的模式,例如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;
}
}
不建议对Windows进行单元测试,因此最好将您的应用程序重构为Model-View-Controller(任何此类模式),并单独测试控制器和模型类。