CategoryTesting: TestingFramework for RegressionTesting of programs written in the EiffelLanguage
Available: http://freshmeat.net/projects/eiffelunit
Note: JimWeirich is no longer maintaining EiffelUnit, and recommends GoboEiffelTest instead.
-- GregPfeil
EiffelUnit is a regression testing framework loosely based on JUnit (A.k.a. JavaUnit). Just as MichaelFeathers says about CppUnit, EiffelUnit is just like JUnit, only different.
The major difference concerns the fact that JUnit makes heavy use of Java's reflection capabilities to ease the pain of writing tests. Since Eiffel doesn't have reflection, EiffelUnit uses automatic code generation to fill that gap. You write the tests, and the eunit program will generate the glue that binds your tests into a single framework, compile and run the program, and report the results.
I've used EiffelUnit for some time now, so I'm very interested in feedback.
Currently EiffelUnit works with the GNU SmallEiffel compiler. There has been a small bit if effort put into making it portable to other compilers. If someone would like to port it to a different Eiffel system, please contact me.
-- JimWeirich
Note: EiffelUnit was formerly known as ETest (WikiName: EiffelTest). The name was changed for several reasons: (1) The new name is more Wiki friendly, (2) it clearly identifies the package as an Eiffel package, (3) it is more in-line with the rest of the XUnit packages, and (4) ISE just released a testing package named Eiffel Test.
Do you think if BertrandMeyer had written EiffelUnit, he would have used machine-generated glue code to fake introspection? Assuming (without proof) that he is the greatest Eiffel programmer in the world, how would he have done it? -- DaveHarris
The latest release of EiffelUnit uses an program written in Eiffel to generate the glue code formerly generated by the perl script. The perl script is still available for those who would prefer to use it. -- JimWeirich
I reworded the question to emphasis that I'm interested in the faking introspection part, not the specific language used. -- DaveHarris
My understanding is that yes, he would have used "faked" introspection. Eiffel's syntax is deliberately kept clean to make it easier to parse and generate Eiffel code. Metalingual features such as introspection can be implemented as language processors that are invoked as part of the built process. --NatPryce
Actually, my understanding is that the latest version of Eiffel from ISE (Meyer's company) does offer some form of introspection/reflection. Reflection is not (yet) standardized in the language and other Eiffel vendors have not yet followed ISE's lead in this area. -- JimWeirich
ISE Eiffel has attribute features introspection but no routine features introspection... I do not know about other compilers. -- GodefroidChapelle