This release is a complete rewrite of pFUnit that is intended to be easier to use and far more extensible than its predecessor.
A quick highlight of new features:
- Extensibility: Heavy use of Fortran 2003 object-oriented features allows users to extend the framework for their own purposes. We encourage developers to send us useful extensions.
- Customized preprocessor for user tests: Simplifies creation of test procedures and use of assertion routines. For those familiar with JUnit, this preprocessor provides things that look like annotations. Specific capabilities include:
- @test - indicate next procedure is a unit test
- @mpiTest(npes=[1,2,5,…]) - indicate next procedure is a unit test requiring MPI and to be run on 1,2,5,… processes.
- @assertEqual(a,b) - provides file and line number for failing tests and returns without executing remaining assertions in the test.
- Simplified parameterized tests: While still not quite as simple as I would prefer, hopefully elegant enough to be useful to others. See the example in ./Examples/ParameterizedTest
- Robust runner: This allows the framework to actually detect failing and hanging tests by having one executable monitor another. Still needs some tweaks for MPI, as the startup time can make the framework think a test is hanging. (I know the fix, but have not yet implemented it.)
- More assertions: We still provide assertEqual for real/complex through rank=5. But we have added a number of other assertions that would have been nice for situations that arise frequently in practice. assertAll(), AssertAny(), … Still more will be added soon such as assertIsMember(), AssertContains(), assertIsPermutation(), etc.
For those that are interested in the details, the overall design follows closely that of JUnit 4.11.
For the moment, there is very little in the way of useful documentation. However, the examples in ./Examples are being maintained and are hopefully self explanatory to those with familiarity with the earlier pFUnit or other xUnit frameworks.
To obtain the code use git to clone - the code is on the master branch. If you want stability, you may want to checkout the pfunit_2.0_beta branch which will only update for bug fixes for this release.
This release should work well under ifort 13.1, gfortran 4.8, and nag 5.3 (907) under Linux and OS X. Because we are pushing the limits of compiler support for F2003, users should expect to stay current with compiler releases from these vendors.
We very much want feedback - please post on sourceforge if you have issues, questions, requests, or even kudos to share.
Chief, Software Systems Support Office Code 610.3
NASA GSFC 301-286-4635
Greenbelt, MD 20771