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. 使用 Infer.NET 进行概率编程

    本文介绍了如何使用 Infer.NET 进行概率性编程. 概率性编程是一种将自定义模型表示为计算机程序的机器学习方法. 借助它可以在模型中包含专业知识,使机器学习系统更易理解. 它还支持在线推断,即在 ...

  2. 在 Windows 上可以用 Docker 吗?

    作者:陈计节 个人博客:https://blog.jijiechen.com/post/docker-on-windows/ Docker,或者准确一点说,容器技术,在近几年里几乎成为了应用分发和集群 ...

  3. RocketMQ源码 — 五、 主要feature及其实现方式

    RocketMQ的主要特点以及实现方式 单机支持1万以上持久队列 所有数据单独存储到一个CommitLog,完全顺序写,随机读 在一个broker上一个DefaultMessageStore管理一个c ...

  4. 在go modules里使用go get进行包管理

    上一篇文章里我们介绍了go modules的初步使用,现在我们来更深入的了解一下如何使用go get在module中管理依赖. module下的包管理 首先我们介绍过go mod edit修改go.m ...

  5. 【转载】 PhpStudy修改Apache的端口号

    phpStudy是一个PHP调试环境的程序集成包.该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便.好用的 ...

  6. mysql双主+keepalived

    环境 OS: centos7Mysql 版本: mysql 5.7Keepalived: keepalived-1.2.20Mysql-vip:192.168.41.100Mysql-master1: ...

  7. Python全栈开发之---输入输出与流程控制

    Python简介 python是吉多·范罗苏姆发明的一种面向对象的脚本语言,可能有些人不知道面向对象和脚本具体是什么意思,但是对于一个初学者来说,现在并不需要明白.大家都知道,当下全栈工程师的概念很火 ...

  8. 教你搞定ElasticSearch(head)

    简介: ElasticSearch(以下简称ES)是一个基于Lucene构建的开源(open-source),分布式(distributed),RESTful,实时(real-time)的搜索与分析( ...

  9. localStorage封装借口store.js的使用

    localstorage 是 HTML5 提供的在客户端存储数据的新方法,主要作用是将数据保存在客户端中,并且数据是永久保存的,除非人为干预删除. localstorage 的局限 1.只有版本较高的 ...

  10. Oracle+mybatis实现对数据的简单增删改查

    第一步:--创建一个表空间:名字叫 mybatis,建在D盘下的date文件夹下: 第二步:创建用户,名字叫  lisi  ,密码为  :123456 第三步:给用户授权: 第四步:我们在    li ...