Ive прочитал так много статей об использовании Powermock и Mockito и попробовал так много разных способов, но я все еще не могу понять, как тестировать следующий статический метод.Статический метод тестирования единицы измерения, который использует набор ресурсов
public static Map<String, String> getEntries() {
Map<String, String> myEntriesMap = new TreeMap<String, String>();
ResourceBundle myEntries = ResourceBundle.getBundle(ENTRIES_BUNDLE);
Enumeration<String> enumList = myEntries.getKeys();
String key = null;
String value = null;
while (enumList.hasMoreElements()) {
key = enumList.nextElement().toString();
value = myEntries.getString(key);
myEntriesMap.put(key, value);
}
return myEntriesMap;
}
код является частью (унаследованных) класс, содержащий около 30 статических методов, как это и рефакторинга не вариант. Аналогичным образом в некоторых других статических методах восстанавливаются DBconnections.
Например: Как я издеваюсь над пакетом ресурсов ENTRIES_BUNDLE и unit тестируют этот метод? Я ищу шаблон, который может быть применен, как правило, ко всем статическим методам.
Да, этот метод не является единым проверяемым в его нынешнем виде. Не потому, что это статично, а из-за вызова 'ResourceBundle.getBundle'. Теоретически, вы могли бы сделать это с PowerMock, если бы вам действительно пришлось, хотя рефакторинг был бы намного лучшим вариантом. Но я смотрю на ваш вопрос, и мне интересно, почему вы тестируете модуль устаревшего класса. Разумеется, если это класс наследия, то большая часть возможности воспользоваться модульным тестированием уже прошла? И если вы не можете изменить его, тогда что вы будете делать, если ваше тестирование выявит ошибку? –
Спасибо за ваш ответ. Я полностью согласен с вами в отношении ценности, полученной в результате написания Junits. Дело в том, что у нас есть этот проект, и часть кода распространяется на JUnits, а часть кода - нет.Идея состоит в том, чтобы довести весь код до свиданий с Junits и охватить новую разработку также с помощью единичных тестов. Этот код является старым и проверенным и стабильным, поэтому мы не хотим его реорганизовать (по крайней мере, на данный момент). Но, сказав это и посмотрев на ваш комментарий, было бы очень полезно, если бы вы могли указать мне, как это сделать с Powermock. – user2706486
Я собираюсь прямо обмануть ад для этого, но https://code.google.com/p/powermock/wiki/MockitoUsage13 содержит информацию о том, как издеваться над статическими методами. Около одного экрана сверху. Но, честно говоря, сначала попробуйте Рожерио, если сможете. –