在平時開發程式的過程中,自己經常會寫一些控制台小程式進行測試某個功能,事後我們會尋找這些小程式,
如果不仔細管理,經常會找不到。
由于每個控制台小程式都有自己獨立的 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類名就好了。
以上就是我利用工廠模式實作的自己測試小程式的用例測試工廠。