首页

源码搜藏网

首页 > 开发教程 > .net教程 >

高级编程研究设计模式自动化测试第2部分

创建时间:2016-05-23 09:56  

介绍

我最后的两篇文章分别献给  行为研究设计模式  它是通过类似于LEGO构建过程简化了测试的创建模式。这篇文章的部分自动化测试系列的设计模式是要提出一个新的概念如何提高驱动测试更进一步的行为。这是要“通过引进行为的配置”的定义,以缓解行动。

UML类图

高级编程研究设计模式自动化测试第2部分

参与者

这些类以及参与增强对象行为研究设计模式是:

什么是我们尝试解决问题?

行为的最初版本有一个重大的shortcoming-无法传递参数的行为。做他们的工作,他们需要一个静态的测试上下文类。另一个相当大的缺陷是,该行为“执行人是不灵活,这是很难改变其硬编码的工作流程。

通过定义增强行为研究设计模式

新概念在以前提高设计步骤。你可以在我以前的物品─阅读更多关于它在自动测试第1部分高级行为研究设计模式相比,早期的设计就是行为分成两个单独的类-行为和定义。主要区别。的定义保持所需的工作流的工作的所有参数。另一个变化是,引擎现在需要定义,而不是行为。

BehaviorDefinition基类


			
public abstract class BehaviorDefinition
{
    public BehaviorDefinition(Type behaviorType)
    {
        this.BehaviorType = behaviorType;
    }

    internal Type BehaviorType { get; private set; }
}

没有什么特别的这个类。它仅持有其行为的基准。

浏览网页行为定义


			
public class NavigatePageBehaviorDefinition : BehaviorDefinition
{
    public NavigatePageBehaviorDefinition(string expectedUrl) : 
        base(typeof(NavigatePageBehavior))
    {
        this.ExpectedUrl = expectedUrl;
    }

    internal string ExpectedUrl { get; private set; }
}

这是一个适用于导航页面的行为要求的各个参数的类。它包含导航网址。另外,我们通过类型NavigatePageBehaviour到基本构造。有必要对发动机的正常工作。

导航页行为变化


			
public class NavigatePageBehavior : ActionBehaviour
{
    private readonly string expectedUrl;

    public NavigatePageBehavior(NavigatePageBehaviorDefinition definition)
    {
        this.expectedUrl = definition.ExpectedUrl;
    }

    protected override void PerformAct()
    {
        Console.WriteLine(this.expectedUrl);
    }
}

相比早期版本的不同之处在于导航网址现在从定义从代替的行为得到了。单一职责原则更紧随其后。

增强的行为引擎 


			
public static class BehaviorEngine
{
    public static void Execute(params BehaviorDefinition[] behaviorDefinitions)
    {
        foreach (var definition in behaviorDefinitions)
        {
            var behavior =
                UnityContainerFactory.GetContainer().Resolve(
                    definition.BehaviorType,
                    new ResolverOverride[] 
                    { 
                        new ParameterOverride("definition", definition) 
                    }) as Behavior;
            behavior.Execute();
        }
    }
}

我们通过定义的执行方法。然而,他们的行为被执行。他们通过统一的IoC容器获取基于定义的行为类型及其实例解析。团结注入目前的定义为“定义的构造函数的参数的参数覆盖的实例。

在测试定义行为研究

在测试中的使用非常简单。


			
[TestMethod]
public void Purchase_SimpleBehaviourEngine()
{
    string itemUrl = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
    BehaviorEngine.Execute(
        new NavigatePageBehaviorDefinition(itemUrl));
}

上一篇:使用不同类型的X值进行简单的线性趋势计算
下一篇:高级编程研究设计模式自动化测试第一部分

相关内容

热门推荐