+1

I suggest the first thing to start with is bring the proposed solution over
to an improvement issue in JIRA and work from there.

Best regards,

Pierre Smits

ORRTIZ.COM <http://www.orrtiz.com>
OFBiz based solutions & services

OFBiz Extensions Marketplace
http://oem.ofbizci.net/oci-2/

On Wed, Jun 8, 2016 at 1:45 PM, Nicolas Malin <nicolas.ma...@nereide.fr>
wrote:

> I'm on the same case, +1
>
>
> Le 08/06/2016 13:42, Pranay Pandey a écrit :
>
>> thanks so much Taher for the explaining it further, makes perfect sense.
>>
>>
>> Best regards,
>>
>> Pranay Pandey
>> HotWax Systems
>> http://www.hotwaxsystems.com/
>>
>> On Wed, Jun 8, 2016 at 3:02 PM, Taher Alkhateeb <
>> slidingfilame...@gmail.com>
>> wrote:
>>
>> Hi Pranay,
>>>
>>> What you are talking about is integration tests (ones that you can run
>>> per
>>> component)
>>>
>>> Unit tests do not need to be run per component. The entire unit test
>>> library for the entire framework should run in probably less than 5
>>> seconds. So there is no need to make them run per component.
>>>
>>> My proposal is to simply have a target like run-unit-tests which would
>>> run
>>> all the unit tests. These tests do not talk to the database or server or
>>> anything, You can run them while flying in an airplane 30,000 feet above
>>> the ocean.
>>>
>>> Mind you I will not remove the integration tests, I'm just adding unit
>>> tests (and probably moving some integration tests to unit tests).
>>>
>>> Naturally, my proposition means that those tests are only JUnit tests
>>> (for
>>> now) but that is a quick solution that I think is rather clean because
>>> we're not really radically modifying anything, we're just adding JUnit
>>> classes and running them.
>>>
>>> Regards,
>>>
>>> Taher Alkhateeb
>>>
>>> On Wed, Jun 8, 2016 at 12:23 PM, Pranay Pandey <
>>> pranay.pan...@hotwaxsystems.com> wrote:
>>>
>>> Hi Taher,
>>>>
>>>> There is one thing that I want to confirm based my understanding, as
>>>> long
>>>> as I know, we can run tests independently as well e.g.
>>>>
>>>> *Running tests for a component: *
>>>>
>>>> java -jar ofbiz.jar -test component=‘order’
>>>>
>>>> *Running a specific test Suite from a component:*
>>>>
>>>> ant run-single-test-suite -Dtest.component=‘order’ -Dtest.suiteName='
>>>> ordertests'
>>>>
>>>> *Running a test case from a component:*
>>>>
>>>> java -jar ofbiz.jar -test -component='order' -case='salesOrder-test'
>>>>
>>>> I may be completely wrong here but just want to confirm and understand
>>>>
>>> your
>>>
>>>> proposal.
>>>>
>>>> Best regards,
>>>>
>>>> Pranay Pandey
>>>> HotWax Systems
>>>> http://www.hotwaxsystems.com/
>>>>
>>>> On Wed, Jun 8, 2016 at 2:41 PM, Taher Alkhateeb <
>>>> slidingfilame...@gmail.com>
>>>> wrote:
>>>>
>>>> Hello Everyone,
>>>>>
>>>>> After refactoring the start component and while starting on the base
>>>>> component I realized that the testing framework for OFBiz is not good.
>>>>>
>>>> You
>>>>
>>>>> cannot do real test driven development or red-green-refactor with the
>>>>> current setup, hence my proposal to change it. I explain below:
>>>>>
>>>>> Problem with current design
>>>>> ----------------------------------------
>>>>> - What we have right now is not unit tests, it's really integration
>>>>>
>>>> tests.
>>>>
>>>>> You have to start the framework, the database, the service engine, the
>>>>> entity engine and pretty much everything.
>>>>> - Testing is very slow, because it's an integration test as I mentioned
>>>>> above. 10 minutes on a good computer!
>>>>> - There is zero mocking! We actually have to --load-data for things to
>>>>> work. Again, these are integration tests.
>>>>> - Too complex: Integration tests by their nature are grabbing too much.
>>>>> Mind you, I am not objecting to integration tests (I actually like
>>>>>
>>>> them)
>>>
>>>> but I am objecting to not having real unit-tests. Unit tests should all
>>>>>
>>>> run
>>>>
>>>>> in a few seconds.
>>>>>
>>>>> Proposed solution
>>>>> --------------------------
>>>>> - We keep what is considered real integration tests the way they are
>>>>>
>>>> right
>>>>
>>>>> now and keep using them
>>>>> - We move what should be unit tests into simple JUnit classes, and we
>>>>>
>>>> do
>>>
>>>> not run them using java -jar ofbiz.jar --test, but instead run them
>>>>> directly from the build.xml script, so these files are not identified
>>>>>
>>>> in
>>>
>>>> any XML document, but are simply called immediately from the build
>>>>>
>>>> scripts.
>>>>
>>>>> - We clearly mark the difference between integration tests and unit
>>>>>
>>>> tests
>>>
>>>> (inside the source files or in the suite declarations).
>>>>> - We change the run-tests target in build.xml to run both unit tests
>>>>>
>>>> and
>>>
>>>> integration tests.
>>>>>
>>>>> I intend to heavily refactor the framework and I would feel better
>>>>>
>>>> about
>>>
>>>> introducing this change while refactoring. What do you guys think?
>>>>>
>>>> Ideas?
>>>
>>>> Suggestions? Approvals and thumbs up?
>>>>>
>>>>> Regards,
>>>>>
>>>>> Taher Alkhateeb
>>>>>
>>>>>
>

Reply via email to