当前位置: 首页 > 知识库问答 >
问题:

在Arquillian中集成测试具有许多依赖项的EJB

孟永望
2023-03-14

我经常使用依赖于几个(比如5-10个)其他EJB/CDI bean的EJB,并且许多方法只使用它们的一个子集。集成测试(我们将Arquillian与html" target="_blank">嵌入式GlassFish4.0容器一起使用)它们是痛苦的,因为我仍然必须为整个类图提供依赖关系。我一个接一个地将类添加到ShrinkWrap归档中,因为添加整个包会创建更多的依赖关系,我不想添加所有类,因为这会显著增加完成一个测试所需的时间。我也不希望为每个测试添加所有类,尤其是那些涉及文件系统或执行shell命令的类。

如果依赖关系图增长,我会通过使用抛出UnsupportedOperationExceptions的方法简单地实现EJB接口来创建虚拟对象,但这变得很乏味,因为有很多这样的对象,而且很难维护类名更改(您预计MyService存在一个DummyMyService,但由于它是从OldService重命名的,您将创建另一个虚拟对象,因为您没有找到DummyOldService)。

ShrinkWrap.create(JavaArchive.class, "test.jar")
     .addClass(MyTestedService.class)
     .addClass(ImportantDependency.class)
     .addClass(Dummy.createDummy(DependencyNeededForSomeMethods.class));

对于像这样的类,当我只想测试doImportantThings方法时:

@Stateless
public class MyTestedService {

    @Inject
    private ImportantDependency importantDependency;

    @Inject
    private DependencyNeededForSomeMethods dependencyNeededForSomeMethods;

    public void doImportantThings(){
         ....
         importantDependency.doIt();
         ....
    }

    public void doSomethingElse(){
         ....
         dependencyNeededForSomeMethods.doRarelyNeededThings();
         ....
         importantDependency.doAnotherThing();
    }
}

或者也许有其他方法来处理它(除了重构测试中的类)?

共有1个答案

长孙泉
2023-03-14

我想,它没有提供这样的功能。很可能这是一个糟糕的设计的迹象。您应该更改包结构。然后只使用所需的包创建包装。

 类似资料:
  • 我试图为Android com.adobe.creativesdk.image库生成一个Xamarin绑定 问题是这个库包含大约20个引用,而这些引用肯定包含更多。我必须浏览整个树并提取所有引用以将它们添加到绑定项目中。 当然,一定有更简单的方法来做到这一点。有人告诉我,我可以使用Android Studio创建一个包含所有引用的捆绑AAR,但我不确定如何使其工作。一些参考文献也是AAR。 你能把

  • 我试图使用Arquillian框架编写一个简单的Widlfly容器测试。我已经遵循了Wildfly容器测试指南中的指南。 得到的pom.xml如下所示。

  • 我有一个有点奇怪的问题。我目前正在使用Arquillian(1.1.0.final)和嵌入式GlassFish(3.1.2.2)。我使用以下指南来设置我的小测试项目。与集成的Derby数据库一起,一切都运行良好。我的真实应用程序使用PostgreSQL作为数据库,因此我配置了我的GlassFish资源如下: 并且我访问持久性上下文和用户事务,如上面的指南所述: 如果我运行我的测试类(Address

  • 问题:Maven在我的测试中找不到一些依赖项 在我的pom中是这样导入的。xml: 我已经试过了: mvn测试编译 使Intellij缓存无效 重启Intellij 清除. m2并重建项目

  • 我正在用Arquillian创建我的第一个EJB测试,并且我面临着一个似乎很常见的问题,考虑到有很多相同问题的帖子。但在尝试了所有的建议后,我还是找不到一个解决办法。我在一个野兽14号上运行它。 EJB管理器 BEAN类 arquillian.xml 你知道我做错了什么吗?谢谢

  • 问题内容: 这是我目前拥有的并且可以正常工作: 现在,我想添加另一个依赖项。我将其更改为: 但是现在我收到此错误消息: FragmentFacebookLoginComponent依赖于多个作用域组件 我该如何解决?我如何有多个依赖关系? 如果我从一个组件中删除范围,则会收到此错误消息: AnotherComponent(无作用域)不能依赖范围内的组件 问题答案: 最后,我创建了一个具有正确范围的