如何 运行 仅在 Hybris 项目中进行单元测试?

How to run unit tests only in a Hybris project?

我们这里有一个大型 Hybris 项目,运行 所有测试都花费了太长时间(几个小时,是的,一家大型咨询公司创造了这些废话)。我的目标是减少所有基于 spring 的集成测试,并用真正的单元测试代替它们。

但是当 运行使用 Hybris ant build 为一个扩展 (ant alltests -Dtestclasses.extensions=myext) 进行测试时,如果只有非 Spring 单元,也会启动带有 junit 租户的服务器在该扩展中进行测试。我也尝试使用 ant unittests 但那个甚至不执行我的测试。

有什么方法可以 运行 只有用 @UnitTest 注释的测试,而不需要在 ant 运行 中启动任何服务器?

PS:我有一个 hybris 5.1 和 5.3 商务套件

你应该使用 ant unittests 而不是 ant unit tests:

ant unittests -Dtestclasses.extensions=myext

备注

运行 只要有人在被测代码的某处使用 Registry.getApplicationContext() ,简单的单元测试就不那么容易了!

事实上,Registry.getApplicationContext() 启动了一个 Hybris 实例。如果您遇到这种情况,您需要使用更好的 class 设计 and/or 模拟来消除对 Registry.getApplicationContext() 的特定调用。

这是很好的信息。然而,在我看来,即使 运行 对单个扩展进行单元测试仍然太多了。单元测试应该 FAST! 如果我愿意,我应该能够 运行 从我的 IDE 中选择一个单元测试方法。如果每次我想测试我的重构代码时都必须等待一堆 non-relevant 到 运行 的单元测试,"red-green testing" 的整个概念就会丢失。

因为这些测试依赖于 运行time 环境,所以 Hybris 中没有单元测试。只有集成测试,因为它们都依赖于 运行ning Hybris 系统来执行。

我想详细说明如何 运行 在 IDE.

中进行单元测试