Hello Akash, Fantastic, I have a few unit tests almost done to be included in the start component. I will create a new subtask under OFBIZ-1463 to commit the tests so you can use them as a reference if you like to.
I also recommend that you follow the same directory structure between the test code and production code. So for example: Production code: framework/start/src/main/java/org/apache/ofbiz/base/start Test code: framework/start/src/test/java/org/apache/ofbiz/base/start The benefit of this hierarchy is that you can access non-public (package protected) methods for testing. This is in fact exactly what I needed to be able to apply some of the tests. Cheers, Taher Alkhateeb On Mon, Jul 18, 2016 at 9:22 AM, Akash Jain <akash.j...@hotwaxsystems.com> wrote: > Thanks Taher for nice initiative! > > We are planning to written unit tests to all components under OFBIZ-1463 > > Thanks and Regards > -- > Akash Jain > > On Mon, Jul 18, 2016 at 10:36 AM, Taher Alkhateeb < > slidingfilame...@gmail.com> 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 > > > > >> > > > > > >> > > > > > >> > > > > > > > > > > > > > > > > > > > >