How to run unit tests only in a Hybris project?

Arne Burmeister picture Arne Burmeister · Feb 11, 2015 · Viewed 11.5k times · Source

We have a large Hybris project here and to run all the tests with takes much too long (hours, yes, a large consulting company created that crap). My target is to reduce all the spring based integration tests and replace them by real unit tests.

But when running the tests with the Hybris ant build for one extension (ant alltests -Dtestclasses.extensions=myext) starts a server with the junit tenant also if there are only non Spring based unit tests in that extension. I also tried to use ant unittests but that one does not even executes my tests.

Is there any way to run only the tests annotated with @UnitTest without any server start in an ant run?

PS: I have a hybris 5.1 and 5.3 commerce suite

Answer

Kamill Sokol picture Kamill Sokol · Feb 11, 2015

You should use ant unittests and not ant unit tests:

ant unittests -Dtestclasses.extensions=myext

Note

Running simple unit tests exclusively is not so easy whenever someone uses somewhere Registry.getApplicationContext() in the code under test!

In fact, Registry.getApplicationContext() starts a Hybris instance. If that happens to you, you need to eliminate that particular call to Registry.getApplicationContext() with a better class design and/or mocks.