我的應用程序(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不能嘲笑一個密封的課程。如果我可以放入某種註冊器而不是圖形,並且能夠看到圖形被調用的方法和時間,那將是甜蜜的。 請指教!
太棒了,我在想着完全一樣的線 - 謝謝你的確認! –