Я пытаюсь написать unit test для устаревшего кода. Класс, который я тестирую, имеет несколько статических переменных. Класс моего тестового примера имеет несколько методов @Test
. Следовательно, все они имеют одно и то же состояние.
Есть ли способ reset всех статических переменных между тестами?
Одно из решений, которое я выбрал, - это явно reset каждое поле, например:
field(MyUnit.class, "staticString").set(null, null);
((Map) field(MyUnit.class, "staticFinalHashMap").get(null)).clear();
Как вы видите, каждая переменная нуждается в пользовательской повторной инициализации. Этот подход нелегко масштабировать, в базе устаревших кодов много таких классов. Есть ли способ reset все сразу? Может быть, перезагружая класс каждый раз?
Как возможное хорошее решение, я думаю, это использовать что-то вроде powermock и создать отдельный загрузчик классов для каждого теста. Но я не вижу простого способа сделать это.