首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WF 4.0 實戰(五):建構直觀且易擴充的自動化測試框架

     編輯:關於.NET

概述

本文展示如何利用 WF 4.0 打造一個自動化測試框架。透過設計工作流來定義測試步驟——如點擊按鈕、輸入文字、驗證結果——讓工作流引擎扮演「測試使用者」自動執行測試案例。框架採用活動庫方式封裝 UI 操作,極易擴充新的測試動作。

待測試應用程式:簡易加法計算機

一個簡單的 WinForms 表單,包含兩個輸入框、一個計算按鈕與結果顯示區:

加法計算機介面

public partial class MainForm : Form
{
    public MainForm() { InitializeComponent(); }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        try
        {
            int a = int.Parse(txt1.Text);
            int b = int.Parse(txt2.Text);
            int c = a + b;
            txt3.Text = c.ToString();
        }
        catch { txt3.Text = ""; }
    }
}

設計測試流程

  1. 建立 Test1 流程圖。
  2. 從工具箱拖曳自訂測試活動(設定值、點擊按鈕、取得結果、驗證、關閉表單)。
  3. 調整活動 DisplayName 讓流程更易讀。
  4. 設定各活動屬性(目標表單類型、控制項名稱、預期值等)。

流程圖示意:

測試流程圖

活動屬性設定範例:

設定加數1的值

點擊計算按鈕

獲取計算結果

驗證結果

關閉表單

執行與驗證

正常情況下,輸出視窗顯示「程式正確」:

測試通過輸出

若將計算邏輯註解掉(製造 Bug),流程會輸出「程式有 bug」:

測試失敗輸出

框架核心類別結構

類別圖

  • StartFlow:啟動工作流宿主。
  • WindowsControlActivity:基底活動,持有 FormType 參數。
  • ClickButtonActivity、SetTextActivity、GetTextActivity、VerifyActivity 等衍生活動封裝具體 UI 操作。

關鍵程式碼片段

WindowsControlActivity 基底類別

public class WindowsControlActivity : CodeActivity
{
    public delegate void SetControlValueCallback(Control oControl);

    [RequiredArgument]
    public InArgument<string> FormType { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        // 取得表單實例邏輯(透過擴充服務)
    }
}

ClickButtonActivity 實作

public sealed class ClickButtonActivity : WindowsControlActivity
{
    [RequiredArgument]
    public InArgument<string> ButtonName { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        var ext = context.GetExtension<StartFlow.Extensions>();
        Form frm = ext.GetForm(FormType.Get(context));
        Button btn = ext.GetControl(frm, ButtonName.Get(context)) as Button;
        SetControlPropertyValue(btn);
    }

    private void SetControlPropertyValue(Control oControl)
    {
        if (oControl.InvokeRequired)
        {
            var d = new SetControlValueCallback(SetControlPropertyValue);
            oControl.Invoke(d, new object[] { oControl });
        }
        else
        {
            (oControl as Button).PerformClick();
        }
    }
}

註:因工作流執行緒與 UI 執行緒不同,必須使用 Invoke 封送呼叫。

原始碼下載

TestflowFramework.rar

總結

此框架展現 WF 4.0 在自動化測試領域的優勢:測試邏輯可視化、步驟可重用、擴充性極高。測試人員只需拖拉拽即可組合新測試案例,大幅降低腳本維護成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved