2013-01-11 39 views
1

我們有一些由步驟組成的測試工作流程。 現在我想構建類來表示它。數據流的設計模式

例如

Step 1: Get edit control for username 
Step 2: Write username into the control 
Step 3: Get edit control for password 
Step 4: Write password into the control 
Step 5: Click Login Button 

的問題是:我怎麼能有這些步驟,方便地交換信息? 如何輕鬆使用步驟2的代碼中的步驟1的編輯控件?

此刻,我只是有下面的代碼:

public abstract class TestCase 
{ 
    // the Steps to build the test 
    public IList<TestStep> TestSteps { get; set; } 

    public TestCase() 
    { 
     this.TestSteps = new List<TestStep>(); 
    } 

    public abstract void Run(); 

    public override string ToString() 
    { 
     return this.GetType().Name; 
    } 
} 

public class TestStep 
{ 
    public int StepNumber { get; set; } 
    public Func<bool> StepFunc { get; set; } 
} 

現在我想在第一步的控制,用它在第二步等等。

想到具有不同StepFunc的返回值適合需要 或特定TestStep派生類中的成員。但是可能有更好的方法。

請注意:目前我無法一步完成此操作。

任何想法高度讚賞!

+0

步驟X需要步驟Y *和步驟Z的結果嗎?例如,步驟X需要控制用戶名和密碼。 –

+0

當然,這可能是必要的。只是舉了一個簡單的例子,讓它更容易談論它。 –

+0

誰應該知道參數的來源?步驟X是否應該知道它需要步驟1和步驟3(而不是2和4)的結果,還是控制器應該知道?我認爲你需要以某種方式「硬」 - 對它進行編碼,你不能爲所有參數自動推導出正確的步驟。 –

回答

-1

介紹一個stepcontroller包含執行步驟和控制步驟的執行,當它執行步驟2時,它將步驟1的結果傳遞給步驟2.步驟2不應該有權訪問步驟的編輯控制1,而是訪問步驟1的結果,即步驟1的編輯控件中輸入的文本。 當然也可以累計步驟的結果,以便步驟4的結果包含用戶名和密碼。

+1

謝謝! TestCase就像一個步進控制器。但是目前我還沒有任何信息,哪一步需要哪些信息(現在不是外部建模)。 –

+0

您不能在每個測試用例的一個結果中累積所有信息。或者:測試用例的每個測試步驟都會對共享共享數據起作用,這是SUT。所有步驟都知道SUT。 – bitbonk

+0

SUT像被測試的結構?看起來像一個非常好的主意!有些步驟構建了結構,有些則使用它。你是這個意思嗎? –