I am working on complicated code generation using CodeModel available in Java. I have managed to setup my unit tests in such a way so that a test generates small but functionally complete Java code which gets compiled in memory and generated class(es) is/are loaded from memory. Everything in general is reasonably quick if I don't output generated code.
Since the generator code is not aware of generated classes, I use reflection to fire methods on generated class which works well. These methods also can fail as I use reflection to make sure methods did expected work by checking state of the object.
My problem is I don't want to log the generated code every time test is run. But I want to see the generated code if test fails. There are lot of tests and since I use infintest, my eclipse becomes slower as infinitest keeps accumulating the output from various tests.
Can I set up junit so that it calls my function if test fails? e.g.
boolean compileSuccessful = compile();
Assert.assertTrue("Ooops, you generated bad code", compileSuccessful);
If above assertion fails, I want to ouput generated code and see what went wrong.