Screenplay模式

Junit的Screenplay

举例

  1. Actor theReceptionist =newActor().with(WebBrowsing.ability())
  2. theReceptionist.attemptsTo(
  3. Go.to(findOwnersScreen.url()),
  4. Search.forOwnersWith(EMPTY_SEARCH_TERMS),
  5. Count.theNumberOfOwners()
  6. );
  7. assertThat(
  8. theReceptionist.sawThatThe(numberOfOwners()),
  9. was(TheExpectedNumberOfOwners)
  10. );
  • A Task
  1. privatestaticString searchTerms;
  2. @Override
  3. publicvoid performAs(Actor asAReceptionist){
  4. asAReceptionist.attemptTo(
  5. Enter.the(searchTerms).into(findOwnersScreen.searchTerms),
  6. Click.onThe(findOwnersScreen.searchButton)
  7. );
  8. }
  9. publicSearchForOwnersWith(String searchTerms){
  10. this.searchTerms = searchTerms;
  11. }
  • A Screen
  1. @Url("owner/find.html")
  2. publicclassFindOwnerScreenextendsWebScreen{
  3. @LocateBy(css="#search-owner-form input")
  4. publicScreenElement searchTerms;
  5. @LocateBy(css="##search-owner-form button")
  6. publicSearchElement searchButton;
  • An Action
  1. publicclassEnterextendsWebDriverInteractionimplementsPerform{
  2. privateString text;
  3. privateScreenElement field;
  4. publicvoid performAs(Actor actor){
  5. web(actor).findElement(field.locator()).sendKeys(text);
  6. }
  7. publicEnter(String text){this.text = text;}
  8. publicstaticEnter the(String text){returnnewEnter(text);}
  9. publicPerforminto(ScreenElement field){
  10. this.field = field;
  11. returnthis;
  12. }
  13. }

优越性

相比于PO模式

  • screen的类更小
  • 更精简更聚焦的Task类
  • 可读性更高
  • 继承关系简单

测者的测试技术笔记:Screenplay 模式(Journey 模式)的更多相关文章

  1. 测者的测试技术笔记:揭开java method的一个秘密--巨型函数

    相信,很多人都不知道Java的Method的上限为64K.本文将超过这个上限的函数叫做巨型函数. 巨型函数的问题 1.如果代码超过了这个限制,Java编译器就报"Code too large ...

  2. 测者的测试技术手册:AI的自动化单元测试

    测者的测试技术手册:AI的自动化单元测试 谈新技术:AI的自动化单元测试    

  3. 测者的测试技术手册:Java中的null类型是测试不可超越的鸿沟

    null是一个非常非常特殊的类型,对于每一个测试人员都要十分小心null的存在的可能性.同时null也让很多RD头疼,甚至连Java的设计者都成人null是一个设计失误.这篇文章,测者想聊聊这个让很多 ...

  4. 测者的测试技术手册:智能化测试框架EvoSuite的一个坑以及填坑方法

    问题 最近在不断地学习和探索EvoSuite框架的时候,在生产JUnit单元测试框架后,出现如下问题: Exception: Caused by: org.evosuite.runtime.TooMa ...

  5. 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法

    今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行case确保错了.在寻求原因的同时也找到了对应的解决方法. Run Unit T ...

  6. 测者的测试技术手册:Junit单元测试遇见的一个枚举类型的坑(枚举类型详解)

    Enum的简介 枚举类型很早就在计算机语言中存在了,主要被用来将一组相似的值包含进一种类型中,这种类型的名称被定义成独一无二的类型描述符,这就是枚举类型. 在java语言中,枚举类型是一个完整功能的类 ...

  7. 测者的测试技术手册:自动化的自动化EvoSuite:Maven项目集成EvoSuite实战

    EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行.得到了Google和Yourkit的支持. ...

  8. 测者的测试技术手册:测试应该关注java.util.List.subList的坑

    java中有一个返回子列表的方法: public list<E> subList(int fromIndex, int toIndex){       subListRangeCheck( ...

  9. 测者的测试技术手册:自动的自动化框架EvoSuite集成Cobertura得到可视化的代码覆盖报告

    EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行.得到了Google和Yourkit的支持. ...

随机推荐

  1. 课程五(Sequence Models),第二 周(Natural Language Processing & Word Embeddings) —— 0.Practice questions:Natural Language Processing & Word Embeddings

    [解释] The dimension of word vectors is usually smaller than the size of the vocabulary. Most common s ...

  2. IntelliJ IDEA中用Git插件操作

  3. List自带方法

    1.List的基础.常用方法:声明: 1.List<T> mList = new List<T>(); T为列表中元素类型,现在以string类型作为例子E.g.:List&l ...

  4. MFC原理第一讲.MFC的本质.以及手工编写MFC的程序

    MFC原理第一讲.MFC的本质.以及手工编写MFC的程序 PS: 这个博客属于复习知识.从头开始讲解. 在写这篇博客之前.已经写了3篇MFC的本质了.不过掌握知识点太多.所以从简重新开始. 一丶MFC ...

  5. Java 容器源码分析之 LinkedList

    概览 同 ArrayList 一样,LinkedList 也是对 List 接口的一种具体实现.不同的是,ArrayList 是基于数组来实现的,而 LinkedList 是基于双向链表实现的.Lin ...

  6. Mybatis学习(二)————— 全局配置文件详解

    一.全部配置内容 SqlMapConfig.xml的配置内容和顺序如下,顺序不能乱.现在来对这些属性的意思一一进行讲解. 二.properties 作用:引用java属性文件中的配置信息,比如,加载连 ...

  7. java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider.<init>()

    Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis ...

  8. 南大算法设计与分析课程OJ答案代码(3)

    问题 A: 动态中位数问题 时间限制: 1 Sec  内存限制: 8 MB提交: 866  解决: 102提交 状态 算法问答 题目描述 输入一组整数a1, a2, …, an ,每输入一个整数,输出 ...

  9. 如何加入Microsoft Teams 技术社区

    作者:陈希章 时间:2018-11-19   概述 这个手册适合没有Office 365 账号的用户,你可以使用免费版立即开始使用Microsoft Teams,并且与微软的产品组专家,以及来自两岸三 ...

  10. .NET Framework 平台构造基础

    CLR 公共语言运行库 执行给定编译代码单元所需的外部服务集合,它提供了一个定义明确的运行库层,可以被支持.NET的所有语言和平台所共享. 库 mscoree.dll:公共对象运行库执行引擎 当用户程 ...