2015-02-11 90 views
2

我们在这里有一个大型的Hybris项目,运行所有的测试需要很长时间(几个小时,是的,一家大型咨询公司创建了这个废话)。我的目标是减少所有基于弹簧的集成测试,并用实际的单元测试代替它们。如何仅在Hybris项目中运行单元测试?

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

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

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

回答

3

您应该使用ant unittests而不是ant unit tests

ant unittests -Dtestclasses.extensions=myext 

注意

运行简单的单元测试完全不是那么容易每当有人在被测代码中使用Registry.getApplicationContext()的地方!

实际上,Registry.getApplicationContext()启动了一个Hybris实例。如果这种情况发生在你身上,你需要消除对Registry.getApplicationContext()的更好的课程设计和/或模拟的特殊要求。

+1

是的,注册表是hybris不理解依赖注入的地方 – 2015-02-12 08:11:55

+0

看起来你是对的5.3,不能用于5.1(没有测试发现) – 2015-02-12 11:11:00

+0

'ant单元测试'是一个自动纠错的错字,抱歉 – 2015-02-12 11:32:12

0

这是很好的信息。但是,在我看来,即使对单个扩展运行单元测试仍然太多。单元测试应该是FAST!如果我选择的话,我应该可以从我的IDE中运行一个单元测试方法。如果我不得不等待大量不相关的单元测试运行,那么每次我想测试重构的代码时,“红绿测试”的整个概念都会丢失。

+0

你是完全正确!整个Hybris框架是一个完整的混乱,我从来没有提到它作为经验,以确保我永远不必与它合作。这是一个真正的痛苦,最糟糕的是我在20年的软件工程中看到的 – 2018-03-01 21:46:59

相关问题