Hybris 如何管理应用程序和集成测试之间的应用程序上下文
How Hybris is managing Application Contexts between the application and integration tests
我目前是 Hybris 的新手,我正在编写集成测试,这很棒,但是我很难理解 junit 租户的概念以及 Hybris 如何管理该租户的应用程序上下文。
我来自 spring 背景,我可以说很容易加载单独的测试配置或任何配置,只是为了测试它而不影响主要的 运行 时间应用程序使用的上下文让我们同时进行调试。
但是在 Hybris 中,我有点困惑,因为当服务器 运行ning 时,您可以轻松地在租户之间交换并同时执行集成测试,假设某些用户正在购买东西。
Hybris 是否为 junit 和主租户提供单独的应用程序上下文?
无论是或否,Hybris 如何管理租户之间的应用程序上下文?
我第一次遇到这个问题是在声明 ehCacheManager bean 时,突然间我所有的测试都开始失败了——缓存处于 SHUTDOWN 模式……这很奇怪。
租户之间是否共享应用程序上下文?
它是否在两个单独的集成测试之间共享?
它是否在一次测试后被销毁,然后为另一次集成测试创建?
我知道其中一些问题可能看起来令人困惑甚至愚蠢,但如果有人能向我解释 hybris 如何管理租户和测试之间的应用程序上下文,我会很高兴,此外,如果你能的话,我将非常感激分享有关此主题的一些资源或书籍。
提前致谢!!!
首先,当客户在相同或预生产服务器上购买东西时,这不是进行测试的好方法。
对于 hybris,租户是不同的概念,而不是 spring。 hybris 租户正在为同一代码库使用多个数据库模式。您可以 运行 在与租户相同的数据库上使用多个 hybris。其中之一是用于进行测试的 junit 租户。 hybris 不是 rollback/reset 数据库在 junit 上的变化。您需要在 hac 或使用 ant 中将其初始化为普通租户。
单元测试中需要手动管理测试数据
开始后,您可以 运行 使用 ant 或前端进行测试
hybris junit 测试文档here。
Does Hybris has separate application context for junit and master tenant ? And regardless of yes or no, how is Hybris managing the application contexts between tenants ?
是的,请在下面找到表示它的方案(来源 SAP:https://help.hybris.com/1811/hcd/8c63621986691014a7e0a18695d7d410.html 参见图:应用程序上下文的层次结构。)。
并不是说在你的情况下 junit 就是我们所说的 "slave" 租户。
Is the application context shared between tenants ? Is it shared between two separate integration tests ? Is it destroyed after one test, then created for another integration test ?
正如您在方案中看到的,全局应用程序上下文是共享的,但 web(我认为是 ehCacheManager 的情况)和核心应用程序上下文不共享。当您 运行 测试时,这些不会改变。
我目前是 Hybris 的新手,我正在编写集成测试,这很棒,但是我很难理解 junit 租户的概念以及 Hybris 如何管理该租户的应用程序上下文。
我来自 spring 背景,我可以说很容易加载单独的测试配置或任何配置,只是为了测试它而不影响主要的 运行 时间应用程序使用的上下文让我们同时进行调试。
但是在 Hybris 中,我有点困惑,因为当服务器 运行ning 时,您可以轻松地在租户之间交换并同时执行集成测试,假设某些用户正在购买东西。
Hybris 是否为 junit 和主租户提供单独的应用程序上下文? 无论是或否,Hybris 如何管理租户之间的应用程序上下文?
我第一次遇到这个问题是在声明 ehCacheManager bean 时,突然间我所有的测试都开始失败了——缓存处于 SHUTDOWN 模式……这很奇怪。
租户之间是否共享应用程序上下文? 它是否在两个单独的集成测试之间共享? 它是否在一次测试后被销毁,然后为另一次集成测试创建?
我知道其中一些问题可能看起来令人困惑甚至愚蠢,但如果有人能向我解释 hybris 如何管理租户和测试之间的应用程序上下文,我会很高兴,此外,如果你能的话,我将非常感激分享有关此主题的一些资源或书籍。
提前致谢!!!
首先,当客户在相同或预生产服务器上购买东西时,这不是进行测试的好方法。 对于 hybris,租户是不同的概念,而不是 spring。 hybris 租户正在为同一代码库使用多个数据库模式。您可以 运行 在与租户相同的数据库上使用多个 hybris。其中之一是用于进行测试的 junit 租户。 hybris 不是 rollback/reset 数据库在 junit 上的变化。您需要在 hac 或使用 ant 中将其初始化为普通租户。
单元测试中需要手动管理测试数据
- 开始后,您可以 运行 使用 ant 或前端进行测试
hybris junit 测试文档here。
Does Hybris has separate application context for junit and master tenant ? And regardless of yes or no, how is Hybris managing the application contexts between tenants ?
是的,请在下面找到表示它的方案(来源 SAP:https://help.hybris.com/1811/hcd/8c63621986691014a7e0a18695d7d410.html 参见图:应用程序上下文的层次结构。)。
并不是说在你的情况下 junit 就是我们所说的 "slave" 租户。
Is the application context shared between tenants ? Is it shared between two separate integration tests ? Is it destroyed after one test, then created for another integration test ?
正如您在方案中看到的,全局应用程序上下文是共享的,但 web(我认为是 ehCacheManager 的情况)和核心应用程序上下文不共享。当您 运行 测试时,这些不会改变。