嵌入式模式下的 JSP 单元测试

2023-12-04

我正在构建一个小型框架来对 JSP 进行单元测试。这些 JSP 有一些自定义标签,除此之外它们并没有什么特别的。

尽管有许多可用的 Java 单元测试解决方案,但我不喜欢使用启动单独的成熟 JSP 容器、部署应用程序并通过 TCP 连接收集结果的方法。这种情况的典型示例是 Apache Cactus、Selenium 等。理想情况下,我想要的是拥有一个尽可能轻量级的嵌入式解决方案(不需要网络连接是一个好兆头)。我还查看了各种模拟框架,但在单元测试期间编译/执行 JSP 时没有找到一个干净的工作示例。

我能找到的最接近的解决方案是在嵌入模式下使用 Jetty,或者特别是它的 ServletTester 类,如文档中所述http://docs.codehaus.org/display/JETTY/ServletTester

不幸的是,上述方法仅适用于 servlet,而没有提及 JSP。我认为有一种方法可以以编程方式将 Jasper servlet 挂入其中,但无法花费一周的时间深入研究 Jetty/Jasper 内部结构只是为了将两者集成。我不介意使用任何其他 JSP/Servlet 容器,只要它是免费且可灵活配置的。

如果有人有类似的设置并愿意分享经验,我将不胜感激。


下面是一个使用 jsps 运行 Jettys ServletTester 的示例项目。

https://github.com/genthaler/jetty-jsp-unit-test-simple/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式模式下的 JSP 单元测试 的相关文章

  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Angular 2和Jasmine单元测试:无法获取innerHtml

    我正在使用测试组件 WelcomeComponent 的示例之一 import Component OnInit from angular core import UserService from model user service Co
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 使用 iOS NumberFormatter 将小数格式化为分数表示

    在 iOS 中 如何使用 NumberFormatter 将数字的小数部分格式化为其小数表示形式 例如我想格式化数字2 375 as 2 3 8 可以用 NumberFormatter 来完成吗 不 您需要实现您自己的 Rational F
  • 什么表明 Office Open XML 单元格包含日期/时间值?

    我正在使用以下命令读取 xlsx 文件Office 开放 XML SDK并且对读取日期 时间值感到困惑 我的一个电子表格有此标记 由 Excel 2010 生成
  • Capistrano 和 X-Sendfile

    我正在尝试让 X Sendfile 使用 capistrano 来处理我的繁重附件 我发现 X Sendfile 不适用于符号链接 我如何处理 Capistrano 符号链接的文件夹内的文件 我的网络服务器是apache2 passenge
  • 具有可选值的 Scala 案例类副本

    我想制作一个案例类的副本 并使用第二个案例类中的可选值对其进行更新 case class A id Int a String b String c String case class Update a Option String b Opt
  • 如何在WP8中使用AudioVideoCptureDevice录制视频

    Here它说我可以使用录制视频AudioVideoCaptureDevice但没有提供示例或帮助 我需要做以下事情 将视频录制到流中DONE 显示录制视频的缩略图 可以是视频录制时捕获的帧 DONE 回放录制的视频DONE 更改相机的分辨率
  • 通过gradle上传到artifactory时如何更改jar文件名

    我正在使用 gradle 来将 jar 上传到神器 我设法做到了 但是我试图更改 jar 文件名 但它并没有真正让我这么做 我使用的是shadowJar来打包 我就是这样做的 apply plugin java apply plugin m
  • 在 matlab 中搜索结构的平行行以查找常见项目

    我存储了 行 列 值 信息 key1 1 1 1 2 1 3 4 2 3 4 attribute1 2 3 4 2 5 如下 Structure A1 key row1 1 1 1 4 3 key col1 1 2 3 2 4 attrib
  • 如何在 Struts 2 中使用 标签?

    我有下面的 Struts 2 标签 我需要检查属性是否value attr row Commentaire不为空 如果不为空 则显示一个小图标 用户可以单击它并查阅属性的内容value attr row Commentaire 我怎样才能使
  • 允许多个 IP 通过 .htaccess 访问 WordPress 站点管理

    我目前有一个正在升级的 WordPress 网站 并且在 htaccess 文件中有一个维护重定向设置 我可以允许我自己的 IP 访问站点和管理员 但如何允许其他编辑者也可以访问多个 IP 访问 我目前正在使用 RewriteEngine
  • java GC 是怎么回事? PermGen 空间已满?

    我不知道我的 java 进程发生了什么 这个过程就是一个索引过程 它从一组 zip 文件中读取文档 并将它们添加到 lucene 索引中 GC日志显示只是连续运行Full GC 4959 569 Full GC 19960K gt 1996
  • 如何让进度条在浏览器导航时正常工作?

    我正在 C 上使用进度条和 Web 浏览器控件 但我不知道如何在导航时制作一个平滑的进度条 您是否能一步一步创建它 我将不胜感激 Use WebBrowser ProgressChanged Event private void WebBr
  • 从 JavaMail 消息中预取预览文本

    我正在使用 JavaMail 1 5 2 读取来自 IMAP 帐户的邮件 为了减少对主机的请求数量 我预取了一些消息数据 例如发件人 日期 消息 ID 等 Folder folder store getFolder inbox folder
  • 为什么有这么多方法来比较平等?

    如果我想比较两个值是否相等 有多种选择 例如 eq对于符号 对于数字 char equal对于角色 string equal对于字符串 eql用于符号 数字和字符串 equal对于除符号之外的所有内容 我希望到目前为止我做对了 现在 作为
  • IntelliSense 不适用于 MVC Razor cshtml 页面

    我遇到了 没有为扩展 cshtml 注册构建提供程序 我的一个使用 MVC 3 的项目出现错误 这使得自动完成功能不起作用 程序仍然运行 但是很烦人 我已经准备好 Web config 并包含所有必需的引用 事实上 我的其他具有相同配置的项
  • 如何从 NSArray 中删除具有相同值的重复对象

    我有一个NSDictinary看起来像这样 NSArray duplicates name a id 123 name c id 234 name a id 431 name c id 983 name a 038 如何删除同名的词典 例如
  • java.util.Arrays 不工作 java 8

    我最近更新为在计算机上使用 Java 8 进行 Eclipse 我之前一直在使用 Java 7 起初 更新似乎工作正常 因为我可以编译并运行一个简单的hello world 程序 然而 当我开始导入我之前正在处理的使用该类的项目时java
  • 声纳分析失败并出现 SocketTimeoutException

    当尝试从 ant 运行 Sonar 时 由于 SocketTimeoutException 我遇到了偶发故障 设置 我在 RHEL 6 机器上运行 Sonar 4 0 配置为与 Postgres 9 2 一起运行 我使用 Jenkins 1
  • 如何使用带有 POST 参数的 JSF 隐式重定向

    在我的 JSF 应用程序中 我有两个页面 list jsf and details jsf 每个页面都有自己的控制器和视图范围 在list jsf我有一个
  • 如何在 mutate 语句中对两列进行排序和粘贴?

    我希望对两列进行排序并将其粘贴到新列中 test data frame a jump b jam test gt mutate new paste sort a b 预期输出是包含三列的数据框 a jump b jam c jamjump
  • 嵌入式模式下的 JSP 单元测试

    我正在构建一个小型框架来对 JSP 进行单元测试 这些 JSP 有一些自定义标签 除此之外它们并没有什么特别的 尽管有许多可用的 Java 单元测试解决方案 但我不喜欢使用启动单独的成熟 JSP 容器 部署应用程序并通过 TCP 连接收集结