Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要关于EJB3Bean类型与单元测试的建议吗_Java_Unit Testing_Jakarta Ee_Junit_Ejb - Fatal编程技术网

Java 需要关于EJB3Bean类型与单元测试的建议吗

Java 需要关于EJB3Bean类型与单元测试的建议吗,java,unit-testing,jakarta-ee,junit,ejb,Java,Unit Testing,Jakarta Ee,Junit,Ejb,首先,这是我的设置: 应用服务器:jBoss 4.2.3GA 使用的框架:Struts 2、EJB3 数据库管理系统:PostgreSQL 9.0.3 默认情况下,出于安全目的,我总是将bean设置为@Local。当不需要时,我不想打开同一容器中其他应用程序的门 现在,我专注于用测试驱动我的开发(测试驱动开发)。因此,我为我的测试创建了一个单独的项目(一种测试项目),以避免在与应用程序相同的项目中编写测试代码和安装测试工具(EasyMock、jUnit、StrutsTest等) 所以。。。这

首先,这是我的设置:

  • 应用服务器:jBoss 4.2.3GA
  • 使用的框架:Struts 2、EJB3
  • 数据库管理系统:PostgreSQL 9.0.3
默认情况下,出于安全目的,我总是将bean设置为@Local。当不需要时,我不想打开同一容器中其他应用程序的门

现在,我专注于用测试驱动我的开发(测试驱动开发)。因此,我为我的测试创建了一个单独的项目(一种测试项目),以避免在与应用程序相同的项目中编写测试代码和安装测试工具(EasyMock、jUnit、StrutsTest等)

所以。。。这意味着我将bean设置为@Remote,以便能够从jUnit测试类访问它们

我的问题是:是否有任何方法可以使用某种条件编译/构建从@Local切换到@Remote?每次都要把我的豆子放回本地,这既麻烦又无聊。每个开发人员都知道重构会带来问题,所以我试图找到一种适当的方法来管理bean的可见性。另一个想法是来自属性或XML文件,所以我只需要根据需要打开或关闭一个东西

对于要测试的每个bean,我需要: -将接口设置为@Remote -在会话bean中为远程接口添加implements项

有什么想法吗

多谢各位


Charles

如果我理解得很好,您可以从单元测试连接到应用服务器以访问远程EJB,对吗

我已经有几年没有使用EJB了,但是有两种方法可以在没有远程通信的情况下对EJB进行单元测试:

  • 使用嵌入式容器,请参见
  • 您可以将EJB用作普通java类,并自己模拟依赖项,请参阅。您可以将模拟配置为返回特定事件的特定值
    希望能有帮助

    另一种选择,而不是使用嵌入式容器
    (JBoss嵌入式容器的状况非常糟糕,我很震惊:()

    就是使用这样一个工具,它有一个部署API,
    并且可以创建一个通过测试代码生成的“迷你企业应用程序”,来包含您的EJB并将它们部署到应用程序服务器上。

    是的,您是对的。这就是我试图实现的。我将尝试您的两个建议。谢谢!