2013-01-11 4 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; } 
} 

가 지금은, 1 단계에서 제어를 얻을 수 2 단계에 등을 사용하려는 : 난 그냥 다음 코드가 순간

.

또는 특수한 TestStep 파생 클래스의 멤버가 필요로하는 반환 값을 가진 다른 StepFunc를 가지고있는 생각. 하지만 아마도 일 것입니다.

참고 : 지금은 한 번에 할 수 없습니다.

모든 아이디어를 높이 평가합니다!

+0

단계 X가 단계 Y * 및 * 단계 Z의 결과를 필요로 할 수 있습니까? 예를 들어, 단계 X는 사용자 이름에 대한 제어와 암호에 대한 제어가 모두 필요합니다. –

+0

물론 이것은 필요할 수 있습니다. 그것에 대해 더 쉽게 이야기 할 수 있도록 간단한 예제를 제공했습니다. –

+0

매개 변수의 출처를 누가 알아야합니까? X 단계는 1 단계와 3 단계의 결과가 필요하다는 것을 알고 있어야하며 2와 4가 아니라 컨트롤러가이를 알고 있어야합니까? 나는 당신이 어떻게 든 "힘들다"- 코드해야한다고 생각합니다. 모든 매개 변수에 대해 올바른 단계를 자동으로 도출 할 수는 없습니다. –

답변

-1

단계 컨트롤러는 단계 실행을 유지하고 단계 실행을 제어합니다. 단계 2를 실행하면 단계 1의 결과를 단계 2로 전달합니다. 단계 2는 단계 2의 편집 제어에 액세스하지 않아야합니다 1이 아니라 단계 1의 편집 제어에 입력 된 텍스트 인 1 단계의 결과에 액세스하는 것입니다. 물론 단계 4의 결과에 사용자 이름과 암호가 모두 포함되도록 단계의 결과를 누적 할 수도 있습니다.

+1

감사합니다! 'TestCase'는 스텝 콘트롤러와 비슷합니다. 그러나 Step에는 어느 정보가 필요한지 (현재 외부에서 모델링되지 않은) 정보가 없습니다. –

+0

각 테스트 케이스에 대해 하나의 결과에 모든 정보를 누적 할 수 없습니까? 또는 : 테스트 케이스의 각 테스트 단계는 SUT 인 공통 공유 데이터에 작용합니다. 모든 단계에서 SUT를 알고 있습니다. – bitbonk

+0

SUT는 Under Under Test와 같은 구조입니까? 아주 좋은 생각처럼 보입니다! 일부 단계는 구조를 작성하고 일부 단계는 구조를 사용합니다. 이게 네가 말하는거야? –