我的应用程序(C#,WinForms)是一个图形编辑器,所以绘图是功能的主要部分。我在绘图时遇到了单元测试逻辑的困难,这让我认为我的设计是错误的。让我来描述一下,我希望得到关于如何进行单元测试或如何重构我的应用逻辑的建议。如何对绘图图形进行单元测试?
所有图形都由管理器(DrawingManager)处理,它执行几何计算并与绘制显示结果的控件的画布进行交互。该管理器的典型方法将通过对绘图画布(Graphics)的引用来调用。在应用程序的表面事件(如OnPaint)中,我们将控制权交给经理决定如何绘制以及如何绘制。为了绘制,它需要持有对Graphics对象的引用,这就是为什么它从事件传递给经理的方法的原因。
protected override void OnPaint(PaintEventArgs e)
{
IZoomBoxDrawingManager drawingManager = ServiceLocator.Instance.Resolve<IZoomBoxDrawingManager>();
drawingManager.DrawMainImage(this, e.Graphics);
drawingManager.DrawObjects(this, e.Graphics);
base.OnPaint(e);
}
现在,让我们说,它开始调用Graphics的方法来输出的几何前DrawObjects调用逻辑中的任一个路径或其他。 我想单元测试这个管理器中的逻辑,但是它与Graphics实例的耦合使得它不可能,至少我不知道如何去做。我用于隔离的Moq不能嘲笑一个密封的课程。如果我可以放入某种注册器而不是图形,并且能够看到图形被调用的方法和时间,那将是甜蜜的。 请指教!
太棒了,我在想着完全一样的线 - 谢谢你的确认! –