Hi all,
Long silence here eh? Sorry for that.
I've restarted to work on testedby in these days and I've refined a bit my ideas, trying to put all what we have discussed here about. As you read in the rest of the post, here I would relaunch the project and discuss with you goals and concrete tasks. As soon we will have defined a concrete roadmap I'll make another posts on my blog to re-publicize it. I would prefer to have a t that point also some important tasks started and some good code in repository too ;)
Before start to get back on project goals and tasks, let me explain why I've decided to go back to this project after more or less one year. Because I think it could be a could stuff! Definitively. And thousands of visit of my original post, also during this silent year, suggest I'm not totally wrong.
So, lets go and restart to discussing and coding about. BTW for discussion I've also opened an IRC channel on Freenode named #testedby (what else?). Join there!
Well let me try to get back and redefine better project goals. The most general goal we can define for Testedby is to collect metadata representing class under test and therein '"link" to test that are stressing them. Ok, adn how would we use this metadata? And, maybe, more important how would we collect it?
About collecting, I see 3 different approach, no one excluding the other:
1) Provide annotation to decorate class under test and their method. In fact this is the original idea I explained in my first blog post. I consider it to be still good at least for interface, while we probably don't need it on classes because the approach defined in next point 2 is much better for them and don't drive us to clutter code. But I would insist here that annotations on interface could be a very nice plus, permitting interface designer to define and document behaviours and not only signatures.
2)Instrument class under test and collect metadata during first execution of a new, not "indexed" code. IOW when you run for the first time your test suite with testedby it instrument your classes under test and then collect metadata for them
3) Provide annotations to decorate test classes and their methods, pointing from them classes under tests and eventually their methods. I'm not completely sold out on this idea, but we have discussed about here a lot (if I well remember John have proposed that). Maybe the approach 2 make this no more interesting (if I well remember we arrive to that proposal because we are looking for some different way to collect metadata that will not clutter production code)
Ok and when metadata are collected (and of course serialized for future use) we can use it to:
1) Run tests stressing a particular class. IOW run tests only for last changed/new classes (or changed/new tests of course). It could be a very big help in day by day programmer life when you have projects with test suite that requires ages to complete. Run just what could fail and run it often (as often as you compile)
2) Run "interface defined" test against all implementations.
3) Navigate from code to test and viceversa in your ide.
4) Create test reports that put focus on class under test
I've started to write some code, reorganizing completely metadata. I should finish for the beginning of next week to define metadata and their very first generator collecting them from annotations. Then I'll write a Junit runner to use this metadata and I plan to use it to run TestedBy project's unit tests.It would be something concrete to discuss and test ;)
There are a lot of tasks to be implemented immediatly after and I'll try to define them asap on our issue tracker. I'd like to discuss them with you on ML too, and I suggest to open dedicated posts for each of them. Just to open the discussion I list here the 5 main tasks I have in mind at the moment:
1) Metadata definition, annotation based builder, metadata marshaller/unmarshaller. I'm working on this point just right now. I'll make a post soon to discuss with you which assumptions I'm taking and how I'm doing that.
2) Junit runner. Here we have tio discuss just a bit our API since it will be used in point 4 and 5
3) Class under test instrumentation and metadata collection.
4) mvn/ant plugin to invoje testedby to execute tests
5) Eclipse plugin using it.
Other?
I'll look forward for all your feedbacks (sorry for asking feedbacks, but we need also to understand who are still interested after one year of silence).
bye
S.
CU
Jochen
--
Jochen Mader - Technical Lead
Pramari Europe GmbH
Bruderwöhrdstrasse 15b
93055 Regensburg
p: +49 941 604889 - 701
f: +49 941 604889 - 700
joc...@pramari.com
http://www.pramari.com
Amtsgericht Regensburg
HRB 11343
Geschäftsführer Andreas Hübner