Я работаю над сложной генерацией кода с использованием CodeModel, доступного на Java. Мне удалось настроить мои модульные тесты таким образом, чтобы тест генерировал небольшой, но функционально полный Java-код, который скомпилирован в памяти, а сгенерированный класс (ы) загружается из памяти. Все в целом достаточно быстро, если я не выдаю сгенерированный код.Firing function on assert failure
Поскольку код генератора не осведомлен о сгенерированных классах, я использую методы отражения для огня на сгенерированном классе, который хорошо работает. Эти методы также могут потерпеть неудачу, поскольку я использую отражение, чтобы убедиться, что методы ожидали работу, проверяя состояние объекта.
Моя проблема заключается в том, что я не хочу регистрировать сгенерированный код при каждом запуске теста. Но я хочу увидеть сгенерированный код, если тест завершился неудачно. Есть много тестов, и поскольку я использую infintest, мое затмение становится медленнее, так как бесконечность продолжает накапливать результаты различных тестов.
Можно ли настроить junit так, чтобы он вызывал мою функцию, если тест не прошел? например
boolean compileSuccessful = compile();
Assert.assertTrue("Ooops, you generated bad code", compileSuccessful);
Если вышеприведенное утверждение не выполнено, я хочу создать сгенерированный код и посмотреть, что пошло не так.
Perfect. Работал как шарм. Спасибо. – user937720