当前位置 : 主页 > 手机开发 > 其它 >

单元测试 – TDD /单元测试Windows应用程序?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我很擅长做任何类型的测试,但我做了一点阅读,看起来这是一个很好的方法.我喜欢只需单击按钮并确保代码库稳定的想法.只要测试通过,就可以自由地进行攻击,这非常有趣. 但是,我的软
我很擅长做任何类型的测试,但我做了一点阅读,看起来这是一个很好的方法.我喜欢只需单击按钮并确保代码库稳定的想法.只要测试通过,就可以自由地进行攻击,这非常有趣.

但是,我的软件是基于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开发它们.一旦掌握了它,这不是不可能的,甚至是困难的.

如果您需要进一步详细说明,请与我们联系.

阿萨夫.

网友评论