我们在这里有一个大型的Hybris项目并且需要花费太长时间来运行所有测试(小时,是的,一家大型咨询公司创建了这个废话)。我的目标是减少所有基于弹簧的集成测试,并通过实际单元测试替换它们。
但是当使用Hybris ant构建一个扩展(ant alltests -Dtestclasses.extensions=myext
)运行测试时,如果在该扩展中只有非基于Spring的单元测试,则启动带有junit租户的服务器。我也尝试使用ant unittests
但是那个甚至没有执行我的测试。
在ant运行中没有任何服务器启动时,是否有任何方法只能运行使用@UnitTest
注释的测试?
PS:我有一个hybris 5.1和5.3商务套件
答案 0 :(得分:4)
您应该使用ant unittests
而不是ant unit tests
:
ant unittests -Dtestclasses.extensions=myext
注意强>
只要有人在被测代码中使用某个地方Registry.getApplicationContext()
,就不会轻易地运行简单的单元测试!
事实上,Registry.getApplicationContext()
启动了Hybris实例。如果您遇到这种情况,则需要使用更好的类设计和/或模拟来消除对Registry.getApplicationContext()
的特定调用。
答案 1 :(得分:3)
这是很好的信息。但是,在我看来,即使单个扩展运行单元测试仍然太多了。单元测试应该是 FAST!如果我选择的话,我应该可以从我的IDE中运行单个单元测试方法。 "红绿测试的全部概念"如果每次我想测试我的重构代码时必须等待一堆不相关的单元测试运行,就会丢失。
答案 2 :(得分:0)
我想详细介绍如何在IDE中运行单元测试。