Hello Everyone,

I was able to get a few tests running and this is very doable. But I faced
a big problem in designing the testing framework because of ANT.

The problem
----------------
The way the build scripts are designed in OFBiz are very complex. A master
file calls other files which call other files. And in the middle you have
external libraries (ant-contrib) and macros, and variables, and class path
declarations, and and and ....

I cannot declare the tests programmatically (with JUnit test suites)
because this means lower level components would depend on higher level
components. So I have to do it in ANT, by navigating this maze of build
scripts, and it was a headache for me just to read them, let alone modify
them to create a testing framework.

Suggested Solution
------------------------
I suggest to implement the testing framework in Gradle, and simply call it
from within ant. This is a middle solution that sustains ant for now, but
can allow us to switch out later.

This means I will just add one more file called build.gradle in the top
level directory, and figure out the business logic for calling the test
suites from that file

I look forward to your feedback.

Regards,

Taher Alkhateeb

On Wed, Jun 8, 2016 at 6:00 PM, Taher Alkhateeb <slidingfilame...@gmail.com>
wrote:

> Hi Everyone,
>
> Thank you all for your support, JIRA created in
> https://issues.apache.org/jira/browse/OFBIZ-7254
>
> I will start working on it and try to implement ASAP to get my focus back
> on refactoring.
>
> Cheers!
>
> Taher Alkhateeb
>
> On Wed, Jun 8, 2016 at 4:58 PM, Deepak Dixit <
> deepak.di...@hotwaxsystems.com> wrote:
>
>> +1
>>
>> Thanks & Regards
>> --
>> Deepak Dixit
>> www.hotwaxsystems.com
>>
>> On Wed, Jun 8, 2016 at 7:12 PM, Mridul Pathak <
>> mridul.pat...@hotwaxsystems.com> wrote:
>>
>> > +1
>> >
>> > Makes perfect sense.
>> >
>> > --
>> > Thanks & Regards,
>> > Mridul Pathak
>> > Senior Manager
>> > HotWax Systems
>> > http://www.hotwaxsystems.com
>> >
>> > > On 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