天天看點

模式應用 - 利用工廠模式制作自己的"小程式測試工廠"

在平時開發程式的過程中,自己經常會寫一些控制台小程式進行測試某個功能,事後我們會尋找這些小程式,

如果不仔細管理,經常會找不到。

由于每個控制台小程式都有自己獨立的 Main方法,是以我們不能把他們都放在一個Solution裡面,這樣

在編譯整個項目的時候會通不過,但是又不想為每個小程式都單獨建立一個項目,這樣又太浪費,因為

每個都是一個非常簡單的代碼檔案。

于是我想到了利用工廠模式,我是這樣做的:

首先建立一個ITestCase接口,它有一個Run方法。

namespace SharpTrainer

{

    interface ITestCase

    {

        void Run();

    }

}

接着我們為我們的每個小程式建立自己的TestCase類,例如:

你可以這樣做:

class TestCase1: ITestCase

      public void Run()

      {

            ....;

      }

class TestCase2: ITestCase

我舉個我實際的TestCase如下:

using System;

    class TestRefParam:ITestCase

        public void Run()

        {

            string first = "first";

            string second = "second";

            Utility.Swap(ref first, ref second);

            System.Console.WriteLine(

                @"first = {0}, second = {1}",

                first, second);

            System.Console.ReadLine();

        }

Utility類的代碼如下:

    public class Utility

        public static void Swap(ref string first, ref string second)

            string temp = first;

            first = second;

            second = temp;

接下來我們便要建立App配置檔案,用于等下

根據 config 檔案的設定用反射建立相應的 TestCase 類型執行個體傳回.

App.Config代碼如下:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <appSettings>

        <add key="testAssembly" value="SharpTrainer"></add>

        <add key="testCaseName" value="TestRefParam"></add>

    </appSettings>

</configuration>

最後在Main方法中利用反射來運作我們的TestCase,如下:

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Reflection;

using System.Configuration;

    class Program

        static void Main(string[] args)

            string AssemblyName = ConfigurationSettings.AppSettings["testAssembly"];

            string CaseName = ConfigurationSettings.AppSettings["testCaseName"];

            string className = AssemblyName + "." + CaseName;

            ITestCase testCase = (ITestCase)Assembly.Load(AssemblyName).CreateInstance(className);

            testCase.Run();

運作結果如下:

first = second, second = first

這樣,以後我就可以不斷地增加小程式測試用例類,每個TestCase類實作 ITestCase接口,而邏輯都寫在

Run方法裡。

我們要運作哪個 TestCase 隻要将App.Config裡testCaseName的鍵值改成相應的TestCase類名就好了。

以上就是我利用工廠模式實作的自己測試小程式的用例測試工廠。