adobe aem

如果要在AEM中进行单元测试,这不是任何建议,而是各种思想的总结和一些可供选择的选项。 一段时间以前,我已经为客户进行了一些研究,这篇文章在很大程度上受到了这项工作的影响,但是很多上下文相关的东西已经被淘汰了。 我仍然尽力确保本文的精髓。 我将尝试尽快进行后续处理,并提供更多详细信息。

选项1:使用吊索工具并测试容器内

Apache sling发布了一组工具http://sling.apache.org/documentation/development/sling-testing-tools.html ,可帮助应用程序中的单元测试。 那里的工具提供了几种进行测试的方法,例如a)没有外部依赖性的老式JUnit,或者b)使用模拟-吊索提供了现成的模拟,可以减少工作量,或者c)我们可以在CQ盒中部署测试用例(或吊索),然后使用OSGi引用运行。

我在这里推荐的方法是,我们将在已经托管的CQ实例中部署JUnit,并远程调用测试用例。 我了解这不是“老学校单元测试,因为我没有抽象任何依赖关系,并且我的单元包括依赖关系”,但是我有这样做的理由。 事实上,如果您一直在关注我关于单元测试的文章,您会知道我不是模拟的忠实拥护者,并且如果我可以设置它,那么我真的很乐意针对依赖项进行任何单元测试。

为此,我们需要做一些事情,如下所示:

  1. 我们将需要一个托管的CQ实例,可以用作运行测试用例的容器

    1. 我们可以使用嵌入式系统,但是随后我们将不得不花更多的精力来创建内容,而不能创建其他内容。 另外,嵌入式容器将是吊索而不是CQ,我们希望使环境尽可能接近我们使用的环境
  2. CQ实例应具有一组预先填充的产品和图像(此设置确实使用AEM电子商务模块,并且PIM和DAM已与外部系统集成在一起),并且可以作为我们的现成测试数据。 这些可以通过我们的后端集成来实现。 我们可以选择独立执行或自动执行(随着时间的流逝,这些事情的自动化也可能发生,以便我们快速启动)
  3. 为了与任何后端服务(例如订单管理,定价,帐户信息)进行交互,我们需要运行一个后端服务实例(如我所说,如果可能,我更喜欢系统而不是模拟对象),并且具有所有变量和部件设置。 该实例还应该具有各种数据设置,例如用户帐户,产品实例,可用性,价格等,以确保我们的用例能够正常工作。 设置独立的后端服务存在明显的挑战,我们可以探索以下2个选项之一
    1. 捕获特定请求类型的所有请求和响应,并将其序列化到测试数据存储中。 它可以是巨大的XML,可以存储在系统的键值对中,也可以是像mongo这样的数据库(甚至可以使用SQL),也可以在文件系统上序列化;或者
    2. 我们可以使用一个已经存在的后端系统

选项2:使用Selenium作为功能测试工具

在这种方法中,我建议根本不要使用JUnits。 这个想法是使用系统测试的原理,它可以测试代码中的所有单元。 这与传统的单元测试方法大不相同,在传统的单元测试中,所有依赖项都被模拟掉了,我们可以快速运行多个测试。 尽管选项1也具有相同的效果,但是在这种方法中,我们更进一步,并利用了我们的系统测试套件。 这个想法不是针对每个用例都执行此操作,而是获取关键业务功能,例如结帐,订单管理,帐户管理并自动执行这些功能。 然后可以将Selenium脚本与JUnit运行器集成,在这里我们可以将其与CI工具集成,并可以从Eclipse或Maven运行它,因此可以与CI本身集成。 这为我们节省了编写那些JUnit并独立管理整个套件的时间。 这种方法还需要一个托管的CQ实例,该实例具有产品数据设置,某些内容设置和后端集成,如选项1所示。

当然,这有点棘手,不是真正的单元测试,但是如果做得好,它会有一些巨大的好处。

翻译自: https://www.javacodegeeks.com/2015/01/unit-testing-in-aem-thinking-loud.html

adobe aem

adobe aem_AEM中的单元测试(大声思考)相关推荐

  1. aem 渲染_AEM中的单元测试(大声思考)

    aem 渲染 如果要在AEM中进行单元测试,这不是任何建议,而是各种思想的总结和一些可供选择的选项. 一段时间之前,我已经为客户进行了一些研究,这篇文章在很大程度上受到了这项工作的影响,但是很多上下文 ...

  2. AEM中的单元测试(大声思考)

    如果要在AEM中进行单元测试,这不是任何建议,而是各种思想的总结和一些可供选择的选项. 一段时间以前,我已经为客户进行了一些研究,这篇文章在很大程度上受到了这项工作的影响,但是很多上下文相关的东西已经 ...

  3. .NET 项目中的单元测试

    .NET 项目中的单元测试 Intro "不会写单元测试的程序员不是合格的程序员,不写单元测试的程序员不是优秀的工程师." -- 一只想要成为一个优秀程序员的渣逼程序猿. 那么问题 ...

  4. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  5. 在Android中进行单元测试遇到的问题

    问题1.Cannot connect to VM  socket closed 在使用JUnit进行测试的时候,遇到这个问题.网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还 ...

  6. 高中数学对计算机,高中数学在计算机中的运用及思考.doc

    <高中数学在计算机中的运用及思考.doc>由会员分享,可在线阅读,更多相关<高中数学在计算机中的运用及思考.doc(6页珍藏版)>请在人人文库网上搜索. 1.高中数学在计算机中 ...

  7. 实例——在编程过程中进行单元测试

    这是一个真枪实弹的例子,如何在编程过程中进行单元测试. 本文以一个图书馆的书籍管理系统作为例子,讲述一个单元测试--编码的循环过程.这里只讲述一个独立画面的编写.画面的编码分两个部分,业务数据部分和界 ...

  8. 【学习笔记】C#中的单元测试

    周一老师讲完单元测试以后,感觉挺好玩,通过查资料和相关书籍学到了几种C#在VS2010的测试方法,跟大家分享下,图文并茂啊,有木有~~ 1.从被测试的代码中生成单元测试 1.1创建C#控制台程序,命名 ...

  9. adobe reader java_使用PDF框设置的表单字段值在Adobe Reader中不可见

    尝试使用Apache PDFBOX(1.8.5)从字段中设置一些问题我遇到了问题 . 我有几个不同的静态PDF用于测试 . 使用以下代码,我可以设置表单字段的值,并保存生成的PDF . 然后,我可以在 ...

最新文章

  1. intellij打开工程在每个java文件上有个红色的无效符的解决办法
  2. 皮一皮:大家族的悲哀。。。
  3. N5-用两个栈来实现一个队列
  4. Eureka修改实例名称
  5. css3 transtion and transform
  6. 在 idea 中为类和方法自动生成注释
  7. python day15
  8. Linux Ubuntu 安装 Matlab
  9. 一张图轻松搞懂javascript event对象的clientX,offsetX,screenX,pageX区别
  10. esp32 micropython 加密_ESP32 MicroPython教程:使用SHA-256
  11. css3mediaquery移动端网页字体适应屏幕代码
  12. 基于jquery实现的web版excel
  13. 在AD中安装元件和封装库
  14. windos不能在本地计算机启动服务器,WDS 服务器可能无法启动 - Windows Server | Microsoft Docs...
  15. Apache ab测试结果解析
  16. html父子页面关系,html元素的父子关系的使用
  17. 清华计算机系与姚班,清华“姚班”,计算机专业学子们无比向往的班级
  18. 手机网页版JS压缩上传图片--base64位 兼容IOS和安卓
  19. 什么是真正的转运?常见的五种转运方法
  20. MySQL 获取所有库名、表名、字段名

热门文章

  1. 浅析机器视觉在安防行业的应用
  2. JavaScript 数据去重的常用几种方法
  3. Windows之建立C++开发环境
  4. 开发板 pc机 虚拟机 三者之间如何互ping通
  5. MySQL utf8mb4 字符集:支持 emoji 表情符号
  6. linux shell 和 golang 查询服务器硬件信息
  7. linux 查看发行版 名称 版本号
  8. java struts2 表达式语言 ognl 简介
  9. python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
  10. linux centos 7 bash升级到5.0