Hybris如何在应用程序和集成测试之间管理应用程序上下文

时间:2019-02-01 16:57:19

标签: spring integration-testing hybris applicationcontext

我现在是Hybris的新手,正在编写集成测试,这很棒,但是我很难理解junit tenant的概念以及Hybris如何为该租户管理应用程序上下文。

我来自春天,我可以说很容易加载单独的测试配置或任何配置,并且仅在不影响所使用的主要运行时应用程序上下文的情况下对其进行测试就可以说是在调试时同时。

但是,在Hybris中,我有些困惑,因为在服务器运行时,您可以轻松地在租户之间交换并在说某位用户购买商品的同时执行集成测试。

Hybris是否对junit和主租户具有单独的应用程序上下文? 而且,无论是或否,Hybris如何在租户之间管理应用程序上下文?

当我声明ehCacheManager bean时,我首先遇到了这个问题,突然我的所有测试开始失败-缓存处于SHUTDOWN模式...这很奇怪。

租户之间共享应用程序上下文吗? 它是否在两个单独的集成测试之间共享? 它在一个测试之后销毁,然后为另一个集成测试创建吗?

我知道其中一些问题可能看起来令人困惑甚至愚蠢,但是如果有人可以向我解释hybris如何在租户和测试之间管理应用程序上下文,我将感到非常高兴,此外,如果您能分享一些问题,我将不胜感激关于此主题的资源或书籍。

先谢谢了!

2 个答案:

答案 0 :(得分:2)

  

Hybris是否对junit和主租户具有单独的应用程序上下文?而且,无论是或否,Hybris如何在租户之间管理应用程序上下文?

是的,请在下面找到一个表示它的方案(源SAP:https://help.hybris.com/1811/hcd/8c63621986691014a7e0a18695d7d410.html Cf。图:应用程序上下文层次结构。)。 enter image description here

不是在您的情况下,junit就是我们所说的“奴隶”租户。

  

租户之间共享应用程序上下文吗?它是否在两个单独的集成测试之间共享?它在一个测试之后销毁,然后为另一个集成测试创建吗?

您可以在方案中看到,全局应用程序上下文是共享的,但Web(我认为是ehCacheManager的情况)和核心应用程序上下文是不共享的。当您运行测试时,这些不会改变。

答案 1 :(得分:1)

首先,当客户在相同或预生产的服务器上购买产品时,这不是进行测试的好方法。 租客是不同的概念,而不是春天的hybris。 hybris租户正在针对同一代码库使用多个数据库架构。您可以与租户在同一个数据库上运行多个hybris。其中之一是使测试的JUnit租户。 hybris无法回滚/重置junit上的db更改。您需要初始化它看起来像正常的租客HAC或蚂蚁。

  • 您需要在单元测试手动管理测试数据

  • 可以在URL开始后运行与蚂蚁或前端测试here

hybris junit测试文档{{3}}。