-
IBehaviou - [R -定义为所有行为的接口。只包含一个执行方法。
-
AssertBehaviour -所有只断言行为的基类。包含两个方法- 断言和执行。
-
ActionBehaviour -一切行动只行为的基类。只包含两个方法PerformAct和执行。
-
WaitableActionBehaviour -为可以同时包含行动,声称等待所有的逻辑更复杂的行为基类。
-
UnityContainerFactory -创建并保持一个单一的全球实例为Unity IoC容器类。
-
ItemPageNavigationBehaviour -为ItemPage类的具体行为。它拥有一个导航逻辑。它是一个行动的行为。
-
ItemPage -一个具体的网页对象,它提供了可以在页面上进行不同的服务操作。它是在特定的行为使用。
-
BehaviourExecutor -它是执行行为'的工作流的列表中的类。
什么是我们尝试解决问题?
在前面的例子中,有一个主要问题,这是不能适当的参数传递到的行为。它们都依赖于一个静态的测试上下文类。正如你可能知道的,静态的使用是不是最好的做法。在我看到的另一个问题是,工作流的定义中ExecutionEngine是有点不灵活。如果需要添加一个新的步骤,要适用于几乎所有的测试依赖于主类的变化。我想提高测试的灵活性。
行为研究设计模式C#代码
之一相比前述实施例的主要区别在于,IBehaviour接口只包含一个于方法执行。
IBehaviour接口更改
|
public interface IBehaviour |
|
{ |
|
void Execute(); |
|
} |
|
查看原始IBehaviour.cs主办的GitHub
另一个主要区别是,有基础上,他们需要在行为设计图案的该变化来解决使用案例多个基行为类。有一个动作的,并且断言,只有类。我相信,这会导致更好的面向对象设计,而不是仅重写所提供的方法的一部分。
操作只基类
|
public abstract class ActionBehaviour : IBehaviour |
|
{ |
|
public void Execute() |
|
{ |
|
this.PerformAct(); |
|
} |
|
|
|
protected abstract void PerformAct(); |
|
} |
|
查看原始ActionBehaviour.cs主办的GitHub
断言只有基类
|
public abstract class AssertBehaviour : IBehaviour |
|
{ |
|
public void Execute() |
|
{ |
|
this.Assert(); |
|
} |
|
|
|
protected abstract void Assert(); |
|
} |
|
查看原始AssertBehaviour.cs主办的GitHub
可等待行动基地班
|
public abstract class WaitableActionBehaviour : IBehaviour |
|
{ |
|
public void Execute() |
|
{ |
|
this.PerformAct(); |
|
this.PerformPostActWait(); |
|
} |
|
|
|
protected abstract void PerformAct(); |
|
|
|
protected abstract void PerformPostActWait(); |
|
} |
|
查看原始WaitableActionBehaviour.cs主办的GitHub
当您需要执行的操作,然后等待的东西,例如,等待页面加载或一个元素成为可见的类是很有用的。
可等待Assertable行动基地班
|
public class WaitableAssertableActionBehaviour : IBehaviour |
|
{ |
|
public void Execute() |
|
{ |
|
this.PerformPreActWait(); |
|
this.PerformPreActAssert(); |
|
this.PerformAct(); |
|
this.PerformPostActAssert(); |
|
this.PerformPostActWait(); |
|
this.PerformPostActWaitAssert(); |
|
} |
|
|
|
protected virtual void PerformPreActWait() |
|
{ |
|
} |
|
|
|
protected virtual void PerformPreActAssert() |
|
{ |
|
} |
|
|
|
protected virtual void PerformAct() |
|
{ |
|
} |
|
|
|
protected virtual void PerformPostActAssert() |
|
{ |
|
} |
|
|
|
protected virtual void PerformPostActWait() |
|
{ |
|
} |
|
|
|
protected virtual void PerformPostActWaitAssert() |
|
{ |
|
} |
|
} |
|
查看原始WaitableAssertableActionBehaviour.cs主办的GitHub