如果通过单元测试你的意思是......单元测试(单独测试一个单元),那么你实际上不需要任何特定的框架,因为 EJB3.0 只不过是带注释的 POJO,因此可以相对容易地进行测试而无需任何特殊的夹具.
现在,如果你指的是其他东西——比如集成测试或功能测试——那么,是的,工具可以帮助和简化事情(但你应该真正开始使用正确的术语:) 我假设这就是你的想法.
首先,JUnitEE似乎已经过时和过时,我什至不确定它对 EJB3.x 有什么影响。其次,我对Cactus的Java EE 5 支持印象不深,而且不得不部署 Cactus 测试很痛苦(我认为 Cactus 对 J2EE 1.4 来说很好,但现在有点过时了)。所以这给我们留下了Ejb3Unit,在我看来这是最好的选择,特别是如果你想用完容器测试,即没有真正部署应用程序(更快)。
如果你想在容器测试中运行,那么你确实可以使用嵌入式容器,我目前的偏好是 GlassFish v3,即使是 Java EE 5(我可能错了,但我对最新 JBoss 的开始时间感到非常失望发布,所以它并没有引起我的太多关注)。请参阅GlassFish Embedded Reloaded 后,您口袋中的一个应用服务器以获取示例代码(您可以从测试中使用)或Using maven plugin for v3 embedded glassfish(如果您使用的是 maven)。
另一种选择是使用Cargo打包和部署您的应用程序,然后针对已部署的应用程序运行一些测试(例如使用 Selenium 或 BDD 工具)。如果您想使用不提供任何嵌入式 API 的容器运行端到端测试,这可能会很有用。
所以,为了回答你的最后一个问题,我确实会使用可用的工具,也许是它们的组合,用于不是单元测试并且不会自己模拟/注入东西的测试,除非它们不能满足我可以满足的一些需求现在想不起来。