У меня есть один класс контроллера, который обрабатывает создание фрагмента. Скажем, как показано ниже:Как издеваться над методом Bundle в Android-тесте Android?
public class FragmentController {
public static Fragment newInstance(String title, int total) {
return total > 0? MultipleDataFragment.newInstance(title, total)
: SingleDataFragment.newInstance(title);
}
}
public class MultipleDataFragment extends Fragment {
public static MultipleDataFragment newInstance(String title, int total) {
Bundle b = new Bundle();
b.putString("title", title);
b.putInt("total", total);
}
}
public class SingleDataFragment extends Fragment {
public static SingleDataFragment newInstance(String title, int total) {
Bundle b = new Bundle();
b.putString("title", title);
b.putInt("total", total);
}
}
В моем тесте (стандартный Junit4 тест класс) у меня есть:
@Test
public void testNewInstanceCreteMultipleData() throws Exception {
Fragment f = FragmentController.newInstance("Hello", 5);
assertTrue("MultipleDataFragment should be created"
, f instanceOf MultipleDataFragment);
}
Поскольку я не дразнить Пакет, я получаю.
java.lang.RuntimeException: Method putString not mocked.Set
Вопрос в том, как я издеваюсь над объектом Bundle, чтобы тест мог быть выполнен? Нужен ли мне статический метод внутри каждого класса, который создает объект Bundle, и использовать его вместо этого или есть лучший подход к этому?
Любой пример этому оценили.
Обратите внимание, что методы getInstance() неполны. У них даже нет обратных заявлений. –