如何对动态渲染 html 和 css 的 Java 代码进行单元测试?

2024-05-05

我有一个 Java 类,它从数据库获取表单定义,然后根据表单定义呈现 html、javascript 和 css,它使用大量“appendable.append(...).append(...)”来构建html 片段,这很容易出错。 Jsp 和通用模板框架(例如 FreeMarker)在这里不是一个选项,因为 javascript、css、html 元素都是动态的(取决于表单定义)。由于某些原因,GWT 也不是一个选择。

对该渲染器进行单元测试的一种直接方法是硬编码预期的 html 代码,然后与实际输出进行比较,但测试非常脆弱。

请问对这种 html 渲染器进行单元测试的最佳方法是什么?

谢谢大家。


如果您对预期的 HTML 值进行硬编码,您的测试可能会很脆弱,但它们可能会捕获大多数错误。另一种方法是检查 HTML 输出中是否存在某些关键或重要标签。这种方法更加灵活,但可能会遗漏一些错误。要决定应使用哪个,请考虑您期望 HTML 结构更改的频率。

这里需要取得平衡。您的测试越具体,它就越脆弱。但如果你不够具体,你的测试就不会发现任何错误。需要练习来培养对具体程度的感觉。

但总的来说,脆性测试非常危险,因此它们可能是“更大的祸害”。如果您的测试标记出很多误报,您将开始忽略它们,然后它们就变得毫无用处。我建议您验证关键标签是否存在。

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

如何对动态渲染 html 和 css 的 Java 代码进行单元测试? 的相关文章

随机推荐

  • 如何为用户提供给定 boost::spirit 语法的自动完成建议?

    我正在使用 Boost Spirit 在我的 C GUI 应用程序中为非技术用户构建简单的 数据过滤器 语言 语言与纯英语非常相似 并且可以解析为 AST 我被要求使该过程尽可能对用户友好 因此我希望提供类似 CLang 的错误消息 无法识
  • 自定义文件属性

    我需要遵循 在我的申请中 我有文件 需要随时签入和签出的文件 当我从应用程序中签出文档时 我需要将自定义属性添加到文件中 以便稍后在签入文档时可以识别它 我尝试使用以下代码使用 DSOFile 中的 OleDocumentPropertie
  • Oracle PL/SQL - NO_DATA_FOUND 异常是否对存储过程性能不利?

    我正在编写一个需要进行大量调节的存储过程 根据 C NET 编码中的常识 异常会损害性能 因此我也始终避免在 PL SQL 中使用它们 我在此存储过程中的调节主要围绕记录是否存在 我可以通过以下两种方式之一进行 SELECT COUNT I
  • 如何将填充轮廓投影到 3D 曲面图上

    我只是想在 3D 中绘制一个表面及其轮廓 就像this http matplotlib org examples mplot3d contourf3d demo2 html例子 这是我用来执行此操作的代码 import matplotlib
  • R:使用“lm”拟合线性模型时的对比错误

    我发现了在 R 中定义线性模型时对比错误 https stackoverflow com questions 18171246 error in contrasts when defining a linear model in r并遵循了
  • SwiftUI:如何横向呈现全屏覆盖

    我正在制作一个应用程序 其中多个页面 视图嵌入到具有选项卡栏 菜单栏和标题的父视图中 如下所示 HeaderView MenuView TabView selection selected HomeView Page2View Page3V
  • 将附件视图按钮添加到 MKMapView 调出注释?

    我最近遇到过这个网站 http www everydayone com 2009 08 mapkit annotation with buttons example 我一直在尝试向我的呼出视图添加一个按钮 来自图像 网站示例上的代码工作得很
  • ios - NSObjCRuntime、NSZone 和 NSObject 中的解析问题

    我在用着AddThis http support addthis com customer portal articles 381270 addthis for ios quick start guide UCHnE8iXSs0在我的 iO
  • 在 Amazon Dynamo DB 中编写复杂查询(数学表达式)

    我已经从 mysql 切换到 Dynamo DB 在 mysql 中 我使用了一个查询来获取靠近特定纬度和经度的所有用户 查询是 SELECT SQRT POW 69 1 latitude latitude 2 POW 69 1 longi
  • 策略模式的现实示例

    我一直在读关于OCP原理 http en wikipedia org wiki Open closed principle以及如何使用策略模式来实现这一目标 我打算尝试向几个人解释这一点 但我能想到的唯一例子是根据 订单 的状态使用不同的验
  • PowerShell函数不会返回对象

    我有一个简单的函数来创建一个通用列表 function test genericType Type System Collections Generic List 1 type typedParameters System String c
  • 反向代理后面的 keycloak 重定向

    我正在尝试让 keycloak 在 kubernetes 中的 kong 入口后面运行 我遇到的问题是 keycloak 正在添加一个它认为它位于返回的网址上的端口 要求 auth mydomain com auth回复 auth mydo
  • iOS 15 中 UITableView 部分之间的额外空间

    UITableView显示没有节页脚的多个节 节之间有额外的空间 Xcode 的视图调试器显示它不是视图 而只是一个空白区域 就我而言 这种行为是不受欢迎的 添加 1 0 0 0 高度页脚并没有帮助 更改表视图也不行style 这是示例代码
  • 将多个文件读取到多个数据框中

    在d 文件夹中 我有很多Stata文件 例如data aa 1 dta data aa 2 dta data aa 3 dta data bb 1 dta data bb 2 dta data bb 3 dta data cc 1 dta
  • 您在 C# 或 .NET 中见过的最奇怪的极端情况是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Spring JPA (Hibernate) Entity Manager 何时将连接返回到连接池?

    在我的 java 进程中 我使用以下 spring 配置连接到 MySql Configuration EnableTransactionManagement PropertySources PropertySource classpath
  • 如何找到运行代码的 conda 环境的名称?

    我正在寻找一种好方法来从正在运行的代码或交互式 python 实例中找出我所在的 conda 环境的名称 用例是我通过 miniconda 安装运行带有 Python 2 和 Python 3 内核的 Jupyter 笔记本 默认环境是Py
  • 如何在 Python 中小写字符串?

    有没有办法将字符串转换为小写 Kilometers kilometers See How to change a string into uppercase https stackoverflow com questions 9257094
  • java中类的命名约定 - 全部大写

    在 Java 中 当类全部大写时 如何命名它 例如 如果我想创建一个班级来选择某些人成为 VIP 我应该将类命名为 VIPSelector 还是 VipSelector Thanks 你的两个选择都有效 类的主要目标是让它们以大写字母开头
  • 如何对动态渲染 html 和 css 的 Java 代码进行单元测试?

    我有一个 Java 类 它从数据库获取表单定义 然后根据表单定义呈现 html javascript 和 css 它使用大量 appendable append append 来构建html 片段 这很容易出错 Jsp 和通用模板框架 例如