Модульное тестирование приватных функций в Android - PullRequest
7 голосов
/ 12 января 2012

Можем ли мы выполнить модульное тестирование частных функций и полей для приложения Android с помощью Android Mock?

Если да, объясните, пожалуйста, как?

Ответы [ 4 ]

6 голосов
/ 12 января 2012

Модульное тестирование частного метода, звучит немного не так для меня.Публичные и защищенные методы являются кандидатами для модульного тестирования.Просто для тестирования приватных методов вы можете сделать метод общедоступным или создать больше тестов публичных методов, которые вызывают приватный метод, и тестируют основные функции приватного метода.

2 голосов
/ 17 сентября 2013

Год спустя я также добавил библиотеку, чтобы помочь в тестировании частных методов и полей.Я считаю, что в Android по-прежнему существует необходимость в тестировании частных методов.

Вы хотите сделать методы своей деятельности приватными, чтобы другие классы не думали, что они могут получить к ним доступ (фрагмент может, но это неправильная практика для менялучше использовать шаблон наблюдаемого-наблюдателя).Затем вы получите приватные поля и методы, к которым должен был бы обращаться только тест.

BoundBox делает именно это!Ниже приведен пример теста, который обращается к 2 частным полям действия для его проверки:

@UiThreadTest
public void testCompute() {
    // given
    boundBoxOfMainActivity = new BoundBoxOfMainActivity(getActivity());

    // when
    boundBoxOfMainActivity.boundBox_getButtonMain().performClick();

    // then
    assertEquals("42", boundBoxOfMainActivity.boundBox_getTextViewMain().getText());
}
1 голос
/ 23 ноября 2017

Лучший и правильный юридический способ тестирования частного метода из тестовой среды @ VisibleForTesting аннотация по методу, поэтому такой же метод будет виден для тестовой среды, как и публичный метод. вот Официальная ссылка для аннотации VisibleForTesting

1 голос
/ 07 сентября 2012

Здравствуйте, опубликовал статью в блоге на эту тему и покажите, как можно достичь результатов тестирования внутренних методов, понимая разницу между пакетом Java и пакетом AndroidManifest.

В конечном итоге вы будете использовать тот же трюк, что мы традиционно применяем в Java: пусть методы для тестирования будут защищены.

Надеюсь, это поможет!

...