为什么说「组合优于继承」?
面向对象编程中有一条经典的设计原则:组合优于继承,即多用组合少用继承。什么是继承?什么是组合?为什么不推荐使用继承?组合有哪些优势?如何判断该用组合还是该用继承?本文将围绕这几个问题来分析组合优于继承的原因。 1 什么是继承?什么是组合? 继承(Inheritance)和组合(Composition)是面向对象编程(Object-Oriented Programming)中两种不同的代码复用机制。
阅读更多面向对象编程中有一条经典的设计原则:组合优于继承,即多用组合少用继承。什么是继承?什么是组合?为什么不推荐使用继承?组合有哪些优势?如何判断该用组合还是该用继承?本文将围绕这几个问题来分析组合优于继承的原因。 1 什么是继承?什么是组合? 继承(Inheritance)和组合(Composition)是面向对象编程(Object-Oriented Programming)中两种不同的代码复用机制。
阅读更多我们知道,Serenity BDD 和 Cucumber Java 是两个常用的、适用于 Java 语言的自动化测试框架。Serenity BDD 框架功能丰富、内置了对业界通用的软件测试设计模式(诸如:页面对象模型、Screenplay 模式等)的支持,而 Cucumber 框架的一大优势是可以使用类似自然语言的方式(Gherkin 语法)来编写测试场景。因此,将两者进行集成将拥有叠加的能力。
阅读更多前文「如何使用 Serenity BDD 进行 UI 测试?」介绍了使用 Serenity BDD 与 Selenium 进行 Web UI 测试的方法,但 Serenity BDD 不仅限于进行 UI 测试,还可以使用其进行 REST API 测试。本文即介绍使用 Serenity BDD 与 REST Assured 进行 API 测试的方法。
阅读更多Screenplay 模式是一个用于软件测试的设计模式,本文探索如何使用 Screenplay 模式编写 Web UI 测试用例。
本文首先会介绍 Screenplay 模式的基本概念;接着,以登录 GitHub 并在页面创建 Issue 为测试场景,来分析该场景中的操作者与行为分别对应 Screenplay 模式中的哪个部分;最后,针对该测试场景,使用 Serenity BDD 测试框架来编写满足 Screenplay 模式的测试用例,示例工程使用 Maven 管理。
阅读更多Serenity BDD(Behavior Driven Development,行为驱动开发)是一个支持 Java 语言的 BDD 自动化测试框架。Serenity BDD 框架功能强大,吸纳了业界诸多通用测试规范,支持页面对象模型(Page Object Model),可与 JUnit、Cucumber、Selenium、JBehave 等多种流行测试框架进行集成。此外,Serenity BDD 还提供详细的测试报告,可以直观呈现每个步骤的执行结果、页面截图、耗时情况,以及整体测试覆盖率等各项数据与指标。
阅读更多前面我们在「如何使用 Cucumber Java 进行 UI 测试?」一文中,以登录 GitHub 并在页面创建 Issue 为例介绍了 Cucumber 与 Selenium 的集成,但其中的示例工程未使用依赖注入工具,所有对象的新建均是使用原生 new 关键字来实现的。接着,我们在上文「如何在 Cucumber Java 中使用 PicoContainer 进行依赖注入?」介绍了在 Cucumber 中使用 PicoContainer 进行依赖注入的方法。尽管 PicoContainer 比较轻量,也是 Cucumber 官方推荐的依赖注入工具,但在 Java 技术栈,Spring 或 Spring Boot 框架才是主流,除了提供依赖注入功能外,其还提供诸多其它实用功能(如灵活的配置、方便的数据库连接、易用的组件集成方法等),所以探索 Cucumber 与 Spring Boot 的集成很有必要。本文即接着前面的两篇文章,同样以登录 GitHub 并在页面创建 Issue 为测试场景,以示例工程的方式演示 Cucumber 与 Spring Boot 的集成,示例工程实现语言为 Java,使用的浏览器测试工具为 Selenium,工程使用 Maven 管理。
阅读更多