great initiative Taher, finally someone who values automated tests to enable TDD but also leading to continuous improvement and finally continuous deployment....

Regards,
Hans Bakker
CEO AntWebsystems.com

On 18/07/16 12:06, Taher Alkhateeb wrote:
Hello Everyone,

In reference to this thread and the Jira OFBIZ-7254, I'm very happy to
announce that OFBiz is now ready for applying unit tests with only 8 new
lines of code in the build script (r1753143) :)

I recommend we do the following moving forward:

1- Introduce unit tests as much as we can to all components
2- Migrate most of the integration tests we currently have to unit tests
(since they are designed to do very little integration).

This is a great chance for us to practice real TDD in OFBiz

Cheers,

Taher Alkhateeb

On Mon, Jun 13, 2016 at 7:43 AM, Pranay Pandey <
pranay.pan...@hotwaxsystems.com> wrote:

+1

Best regards,

Pranay Pandey
HotWax Systems
http://www.hotwaxsystems.com/

On Fri, Jun 10, 2016 at 7:46 PM, Taher Alkhateeb <
slidingfilame...@gmail.com
wrote:

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









--

Regards,

Hans Bakker
CEO, http://antwebsystems.com

Reply via email to