Сбросить статическую переменную класса во время модульного теста

Я пытаюсь написать модульный тест для устаревшего кода . Класс, который я тестирую, имеет несколько статических переменных. В моем тестовом классе есть несколько @Testметодов. Следовательно, все они имеют одно и то же состояние.

Есть ли способ сбросить все статические переменные между тестами?

Одно из решений, которое я придумал, - это явно сбросить каждое поле, например.:

field(MyUnit.class, "staticString").set(null, null);
((Map) field(MyUnit.class, "staticFinalHashMap").get(null)).clear();

Как видите, каждая переменная требует пользовательской инициализации re -. Подход непросто масштабировать, таких классов в легаси-кодовой базе очень много. Есть ли способ сбросить все сразу? Может быть, перезагружая класс каждый раз?

В качестве возможного хорошего решения я думаю использовать что-то вроде powermock и создавать отдельный загрузчик классов для каждого теста. Но я не вижу простого способа сделать это.

17
задан kan 6 August 2012 в 14:00
поделиться