我正在使用 Java 中可用的 CodeModel 进行复杂的代码生成。我设法以这样一种方式设置我的单元测试,以便测试生成小但功能完整的 Java 代码,这些代码在内存中编译,并且生成的类是从内存中加载的。如果我不输出生成的代码,通常一切都相当快。
由于生成器代码不知道生成的类,我使用反射来触发生成类的方法,效果很好。这些方法也可能会失败,因为我使用反射通过检查对象的状态来确保方法完成了预期的工作。
我的问题是我不想在每次运行测试时都记录生成的代码。但是如果测试失败,我想查看生成的代码。有很多测试,因为我使用了 infintest,我的 eclipse 变得更慢,因为infinitest 不断积累各种测试的输出。
我可以设置 junit 以便在测试失败时调用我的函数吗?例如
boolean compileSuccessful = compile();
Assert.assertTrue("Ooops, you generated bad code", compileSuccessful);
如果上述断言失败,我想输出生成的代码,看看出了什么问题。