如何对 Java EE 代码进行单元测试?

2024-03-24

我想问一下您测试 Java EE 代码的首选方式?

我发现只有三个项目试图帮助在 Java EE 环境中编写单元测试代码:

  • http://jakarta.apache.org/cactus/ http://jakarta.apache.org/cactus/: 最后发布: 2009-01-18
  • http://www.junitee.org/ http://www.junitee.org/:最后发布:2004-12-11
  • http://ejb3unit.sourceforge.net/ http://ejb3unit.sourceforge.net/:最后发布:2008-05-17

所以我想知道,

  • 有没有任何框架可以帮助编写(Java EE代码的junit测试?
  • 您使用嵌入式 Java EE 服务器(例如 jboss 或 glassfish v3)吗?
  • 你自己模拟并注入吗?

多谢...


If by 单元测试你的意思是...单元测试(单独测试一个单元),那么你实际上不需要任何特定的框架,因为EJB3.0只不过是带注释的POJO,因此可以相对容易地进行测试,而不需要任何特殊的固定装置。

现在,如果你指的是其他东西 - 比如集成测试 or 功能测试- 然后,yes,工具可以帮助和简化事情(但你真的应该开始使用正确的术语:)我假设这就是你的想法。

First, JUnitEE http://www.junitee.org/看起来已经死了并且过时了,我什至不确定它对 EJB3.x 有什么帮助。其次,我对这件事没有印象Java EE 5 支持 http://jakarta.apache.org/cactus/writing/howto_ejb_3.html of Cactus http://jakarta.apache.org/cactus/并且必须部署 Cactus 测试是痛苦的(我认为 Cactus 对于 J2EE 1.4 来说很好,但现在有点过时了)。所以这给我们留下了Ejb3Unit http://ejb3unit.sourceforge.net/我认为这是最好的选择,特别是如果你想跑步从容器中取出测试,即无需真正部署应用程序(更快)。

如果你想跑步在容器中测试,那么你确实可以使用嵌入式容器,而我当前的偏好是 GlassFish v3,即使是 Java EE 5(我可能是错的,但我对最新 JBoss 版本的启动时间感到非常失望,所以它没有得到我的大部分注意力)。看帖子GlassFish Embedded Reloaded,您口袋里的应用服务器 http://blogs.oracle.com/alexismp/entry/glassfish_embedded_reloaded示例代码(您可以在测试中使用)或使用 v3 嵌入式 glassfish 的 Maven 插件 http://blogs.oracle.com/sirajg/entry/using_maven_plugin_for_v3(如果您使用的是 Maven)。

另一种选择是打包和部署您的应用程序Cargo http://cargo.codehaus.org/然后针对已部署的应用程序运行一些测试(例如使用 Selenium 或 BDD 工具)。如果您想使用不提供任何嵌入式 API 的容器运行端到端测试,这可能很有用。

因此,为了回答你的最后一个问题,我确实会使用可用的工具,也许是它们的组合,用于不是单元测试的测试,并且不会自己模拟/注入东西,除非它们不能满足我可以满足的一些需求现在暂时想不起来。

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

如何对 Java EE 代码进行单元测试? 的相关文章

  • JavaEE 8 教程,在 hello1 项目上部署失败

    我正在尝试学习 Java EE 8 我遵循了官方指南https javaee github io tutorial https javaee github io tutorial 但我有这个问题 cargo maven2 plugin 1
  • 使用 Java 编程式 HTML 文档生成

    有谁知道如何在 Java 中以编程方式生成 HTMLDocument 对象 而不需要在外部生成字符串 然后使用 HTMLEditorKit read 来解析它 我问的两个原因 首先 我的 HTML 生成例程需要非常快 并且我认为将字符串解析
  • 使用 jdbc 程序连接到 Open Office odb 文件

    我编写了以下代码来连接到 OpenOffice db String db C Documents and Settings hkonakanchi Desktop Test odb Class forName org hsqldb jdbc
  • 如何在Spring的applicationContext.xml中指定默认范围来请求范围?

    我想让所有 bean 请求默认作用域 但是 Spring 文档说默认作用域是 Singleton 第 3 4 1 和 3 4 2 节http static springsource org spring docs 2 5 x referen
  • java“void”和“非void”构造函数

    我用 java 编写了这个简单的类 只是为了测试它的一些功能 public class class1 public static Integer value 0 public class1 da public int da class1 v
  • 删除 servlet 中的 cookie 时出现问题

    我尝试使用以下代码删除 servlet 中的 cookie Cookie minIdCookie null for Cookie c req getCookies if c getName equals iPlanetDirectoryPr
  • 如何在具有动态列的表中插入值 Jdbc/Mysql

    我想在具有动态列的表中添加值 我设法创建一个包含动态列的表 但我不知道如何插入数据 Create Table sql CREATE TABLE MyDB myTable level INTEGER 255 int columnNumber
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • 我们可以在三元运算符(Java)中使用命令吗?

    这是一个工作代码 String a first String b second String object System out println object null a b 但它不是 String a first String b se
  • 独占锁定ConcurrentHashMap

    我知道不可能锁定 ConcurrentHashMap 进行独占访问 但是 我找不到原因 是因为构成CHM的 Segment 没有被api公开吗 据推测 如果是的话 客户端代码可以执行 交接 锁定 Cheers 我知道不可能锁定 Concur
  • JSP 标签+ scriptlet。如何启用脚本?

    我有一个使用标签模板的页面 我的 web xml 非常基本 我只是想在页面中运行一些代码 不 我对标签或其他替代品不感兴趣 我想使用不好的做法 scriptlet 哈哈 到目前为止 我收到了 HTTP ERROR 500 错误 Script
  • 如何自定义JProgressBar?

    我正在制作一个启动器 我想要一个自定义的进度栏 我已经做了一些研究 并且可以使用 JavaFX 从未用它做过任何事情 并且可以通过替换 UI 来实现 我正在寻找一个具有圆形边缘和圆形填充的酒吧 像这样的事情 package gui impo
  • 使用外部硬盘写入和存储 mysql 数据库

    我已经设置了 mysql 数据库在我的 Mac 上使用 java 和 eclipse 运行 它运行得很好 但现在我将生成大约 43 亿行数据 这将占用大约 64GB 的数据 我存储了大量的密钥和加密值 我有一个 1TB 外部我想用作存储位置
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • @TestPropertySource 不适用于 Spring 1.2.6 中使用 AnnotationConfigContextLoader 的 JUnit 测试

    似乎我在 Spring 4 1 17 中使用 Spring Boot 1 2 6 RELEASE 所做的任何事情都不起作用 我只想访问应用程序属性并在必要时通过测试覆盖它们 无需使用 hack 手动注入 PropertySource 这不行
  • 如何计算文件中单词的长度?爪哇

    我正在尝试编写一个代码来计算文件中特定长度的单词数 例如 How are you 会打印 Proportion of 3 letter words 100 3 words 我想计算长度为 1 2 3 4 5 6 7 8 9 10 11 12
  • java中的比较器链

    正在阅读Oracle 关于接口的 Java 教程 https docs oracle com javase tutorial java IandI createinterface html其中给出了一个例子Card 打牌 我试图理解接口中的
  • 将字符串中的字符向左移动

    我是 Stack Overflow 的新手 有一道编程课的实验室问题一直困扰着我 该问题要求我们将字符串 s 的元素向左移动 k 次 例如 如果输入是 Hello World 和3 它将输出 lo WorldHel 对于非常大的 k 值 它
  • JDK 7 的快速调试/调试构建

    我正在寻找 JDK 的调试 或者我猜他们称之为快速调试构建 以启用在运行时生成的打印程序集以及查找性能问题时所需的其他诊断 就目前情况而言 我似乎找不到可以直接使用的 现成的 快速调试构建二进制包 有人可以帮我提供下载链接 或者至少提供有关
  • 监控 Java 应用程序上的锁争用

    我正在尝试创建一个小基准 在 Groovy 中 以显示几个同步方法上的高线程争用 当监控自愿上下文切换时 应该会出现高争用 在 Linux 中 这可以通过 pidstat 来实现 程序如下 class Res private int n s

随机推荐

  • 在 .NET 异常中保留原始 StackTrace/LineNumbers

    了解之间的区别throw ex and throw 为什么在这个例子中保留了原来的StackTrace static void Main string args try LongFaultyMethod catch System Excep
  • Windows Phone 应用程序缺少 EventToCommand

    我正在使用 MVVM Light 构建 Windows Phone 8 应用程序 到目前为止 一切都很好 但是 当我使用 EventToCommand 时 出现多个错误 一个类似的问题在这里迁移到 SL5 的 v4 时 EventToCom
  • 为什么 C++ 中不允许初始化整型成员变量(不是 const static)?

    当我尝试在类定义中初始化 int 成员变量时 我的 C 编译器会抱怨 它告诉我们 只有静态常量整型数据成员才能在类中初始化 您能否解释一下此限制背后的理由 如果可能的话 举例说明 因为目前的标准是不允许的 根据比亚恩的说法 http www
  • WP7 在地图上拖动图钉

    有谁知道如何在运行 Mango 的 WP7 客户端上的地图上实现可拖动图钉 我有一个图钉绑定到地图上的地理位置 我希望用户能够将其拖动到地图上并记录其新位置 我见过一些资源 但它们用于非 WP7 Bing 地图控制 任何帮助 将不胜感激 T
  • 如何使用 Asset Pipeline 从非标准目录传送字体

    我正在尝试将 Fontawesome 包含在 Rails 4 应用程序中 但资产并未进入资产管道 然而 这些字体并没有在生产中使用 我不明白为什么 文件结构组织 我所有的资产都存储在 assets components因此 Fontawes
  • Node.js 公牛队列中的作业陷入“等待”状态

    我有一堆工作在公牛队列中 其中一个被卡住了 1 个多小时 通常需要大约 2 分钟才能运行 但没有失败 我无法使用我使用的 bull arena UI 将作业从活动状态中删除 因此我删除了 Redis 中活动作业的密钥 这消除了卡住的活动作业
  • php 中的图像验证码

    下面是一个程序的源代码 谁能帮我弄清楚程序的工作原理
  • 在 Android 手机中打开键盘时图像大小调整问题

    感谢您的阅读 我是cordova开发的新手 我正在使用framework7使用cordova开发混合应用程序 我将背景放在登录表单上 但在移动设备中 当打开键盘进行书写时 背景图像会调整大小 我想要修复打开 Android 键盘时未调整大小
  • r-将列表列转换为字符向量,其中列表是字符

    我正在尝试将列表转换为单个字符值 或者基本上从这里开始 test lt data frame a c 1 1 1 2 2 2 b c a b c d e f gt group by a gt summarise b list b to th
  • 在 Elasticsearch 和 Lucene 4.4 中使用 Shingles 和停用词

    在我正在构建的索引中 我有兴趣运行查询 然后 使用方面 返回该查询的带状疱疹 这是我在文本上使用的分析器 settings analysis analyzer shingleAnalyzer tokenizer standard filte
  • 如何检查 AlarmManager 是否已经设置了闹钟?

    当我的应用程序启动时 我希望它检查特定警报 通过 AlarmManager 注册 是否已设置并正在运行 谷歌的结果似乎表明没有办法做到这一点 这仍然正确吗 我需要执行此检查 以便在采取任何操作创建新警报之前向用户提供建议 跟进 ron 发表
  • 如何将数据直接写入显存?

    程序员有什么办法可以直接将数据写入显存吗 我知道操作系统对此非常严格 但是某些类型的应用程序 例如视频播放器或电脑游戏 如何将其数据直接写入视频内存 我知道有很多知名的库 例如 OpenGL 但它们毕竟只是普通的库 它们和我和你写的程序没有
  • 有没有办法在不修改 Yocto 的情况下为机器 ID 创建链接?

    我正在运行使用 Yocto Zeus 3 0 0 构建的 Linux 4 14 149 我正在运行只读文件系统 最近发现一个问题 我的 UID etc machine id 每次启动都会发生变化 这个问题的结果 https superuse
  • wpf应用程序在调试模式下运行,但在没有调试的情况下不会运行

    我的 WPF 应用程序在 VS2015 中以调试模式成功运行 但是 在不调试的情况下启动时 应用程序启动并立即完成 从 Debug Release 文件夹启动 exe 文件时也会发生同样的情况 事件查看器显示以下 Net 运行时错误 应用程
  • 在elasticsearch中存储日期格式

    当我想向 Elasticsearch 添加一个日期时间字符串时 我遇到了一个问题 该文件如下 LastUpdate 2013 07 24 00 00 00 该文档提出了一个错误 即 NumberFormatException For inp
  • WCF服务的启动方法在哪里?

    我需要在第一次调用 wcf 服务之前运行一些方法 我应该将这些方法放在哪里 WCF服务的启动方法在哪里 Obs1 我的 WCF 服务将在 IIS6 上运行 Obs2 我正在使用 net框架4 0 实现此目的的一种方法是自行托管 WCF 服务
  • 如何将 MouseEvents 添加到 AbsolutePanel?

    如何在不创建 Composite widget 的情况下将 MouseEvents 特别是 MouseOutHandlers 添加到 AbsolutePanel 或者这可能吗 据我所知 它涉及添加 DomHandler 和 HandlerR
  • import java.util.*; 和有什么区别并导入java.util.Date; ?

    我只想输出电流 我写了 import java util 一开始 并且 System out println new Date 在主要部分 但我得到的是这样的 Date 124bbbf 当我将导入更改为import java util Da
  • 当一条语句中多次调用同一个UDF时,它会被调用多少次?

    在以下 t sql 语句中 dbo FUNC 函数将被调用多少次 SELECT column1 column2 dbo FUNC column3 AS column3 FROM table1 WHERE dbo FUNC column3 g
  • 如何对 Java EE 代码进行单元测试?

    我想问一下您测试 Java EE 代码的首选方式 我发现只有三个项目试图帮助在 Java EE 环境中编写单元测试代码 http jakarta apache org cactus http jakarta apache org cactu