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
Unit testing 使用嵌入式容器测试EJB3.1应用程序_Unit Testing_Ejb_Ejb 3.0_Ejb 3.1 - Fatal编程技术网

Unit testing 使用嵌入式容器测试EJB3.1应用程序

Unit testing 使用嵌入式容器测试EJB3.1应用程序,unit-testing,ejb,ejb-3.0,ejb-3.1,Unit Testing,Ejb,Ejb 3.0,Ejb 3.1,在嵌入式容器上部署bean或bean方法(或单元)后,是否可以将其称为“单元测试”来进行测试。我觉得这是可能的,因为 我们仍然只测试单个单元,可能是单个EJB或其方法,它不依赖于任何其他开发人员提供的任何其他应用程序代码。但是,它当然从嵌入式容器中获取服务

在嵌入式容器上部署bean或bean方法(或单元)后,是否可以将其称为“单元测试”来进行测试。我觉得这是可能的,因为

  • 我们仍然只测试单个单元,可能是单个EJB或其方法,它不依赖于任何其他开发人员提供的任何其他应用程序代码。但是,它当然从嵌入式容器中获取服务
  • 我同意在这个问题上有很多可以辩论的地方,我也同意我上面提到的可能是不对的。所以,我希望听到你们所有人的意见,如果我的想法是正确的,或者如果我遗漏了一些要点。就我所见,单元测试没有一个单一而可靠的定义。如果有,请给我一些建议,这将对我有很大帮助

    非常感谢你的支持。
    -Ganesa…

    我认为答案完全取决于你在测试中做了什么

    根据单元测试的定义。如果您需要一个嵌入式容器来测试最小的代码单元,那么是的,这就是单元测试

    我的一个例子是使用高超音速DB进行DAO测试。如果没有内存中的DB(据我所知),测试JPA查询是不可能的,它们是DAO方法代码的最小部分


    但是,如果您使用嵌入式容器测试EJB方法,并且它们与其他注入的EJB或POJOs(例如通过CDI)进行协作,那么我将考虑这种集成测试。您现在不是在测试最小的代码,而是在测试其他东西(其他协作EJB或POJO),您需要模拟协作者来真正测试EJB的最小代码块。

    在我的情况下,我的EJB不会与其他EJB协作,而只接受容器提供的服务。例如,我的EJB将使用已配置的消息队列、目的地、与安全相关的配置等,以确保它们在容器中部署时不会中断。当然,我计划分两个层次来处理它。首先,模拟一切,只测试单元。在第二个层次上,我想先测试一下我的单元是否在嵌入式容器上工作,然后再将其与其他应用程序代码集成。对吗?你的第二级测试我会考虑它的集成测试。您已经有了单元测试来确保小块代码是正确的。您的“第二级”测试更倾向于确保配置是正确的-我不愿意将任何配置测试作为我的单元测试套件的一部分。感谢您在这方面的投入:-)