Size: a a a

StartAndroid Ru Testing

2019 July 26

AP

Andrey Pomazkin in StartAndroid Ru Testing
еще у меня такая проблема, запускаю один тест - он проходит, запускаю весь класс тестов, первый проходит, остальные нет.
моки заданы в виде полей с аннотацией @Mock
в setUp() - провозится их инициализация.
вроде бы перед каждым тестом моки должны заново инициироваться, может ошибка и не в этом
источник

N

Nikolay in StartAndroid Ru Testing
Andrey Pomazkin
еще у меня такая проблема, запускаю один тест - он проходит, запускаю весь класс тестов, первый проходит, остальные нет.
моки заданы в виде полей с аннотацией @Mock
в setUp() - провозится их инициализация.
вроде бы перед каждым тестом моки должны заново инициироваться, может ошибка и не в этом
проблема в том что ты гдето сохранил стейт который влияет на дальнейшие тесты
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
Nikolay
проблема в том что ты гдето сохранил стейт который влияет на дальнейшие тесты
вроде нет, презентер инициализируется перед каждым тестом
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
сейчас рэндомно не срабатывают тесты
источник

N

Nikolay in StartAndroid Ru Testing
Andrey Pomazkin
сейчас рэндомно не срабатывают тесты
ну это 100% стейт гдето
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
пойду мануал мокито перечитывать вобщем(
источник

N

Nikolay in StartAndroid Ru Testing
Andrey Pomazkin
пойду мануал мокито перечитывать вобщем(
я к тому что может твой презентер чтото там сохранил
источник

N

Nikolay in StartAndroid Ru Testing
и все
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
но он перед каждый тестом пересоздается
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
собственно, в нем и полей нет вообще
источник

N

Nikolay in StartAndroid Ru Testing
Andrey Pomazkin
но он перед каждый тестом пересоздается
ну вот в этом методе что ты скинул я не вижу чтобы он пересоздался
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
это родительский класс теста
источник

И

Игорь Казаков in StartAndroid Ru Testing
Andrey Pomazkin
Привет, тестирую презентер.
В тестовом классе мокаю все зависимости презентера(интерактор, например),
создаю настоящий презентер,
запускаю у презентера метод загрузки данных(например),
проверяю, что у интерактора запускается метод получения данных
проверяю, что у интерфейса view вызываются некоторые методы(типа showLoading и т д)
вопрос в том:
если я хочу проверять, какие методы и сколько раз вызывались у презентера, я его тоже должен мокать? Или в принципе можно spy создать? или вообще не нужно заморачиваться, что там в презентере вызывается, а главное проверять, как у view вызываются методы?
В тесте презентера не надо проверять кол во вызовов методов презентера, ты как раз проверяешь, сколько раз вызвались методы (аргументы, возращаемые результаты) интерактора, вьюхи, других классов, которые ты мокируешь. И тестировать надо по хорошему только публичные методы презентера(в конкретном случае) В тесте вьюхи ты как раз проверишь че там у презентера вызвалось
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
Игорь Казаков
В тесте презентера не надо проверять кол во вызовов методов презентера, ты как раз проверяешь, сколько раз вызвались методы (аргументы, возращаемые результаты) интерактора, вьюхи, других классов, которые ты мокируешь. И тестировать надо по хорошему только публичные методы презентера(в конкретном случае) В тесте вьюхи ты как раз проверишь че там у презентера вызвалось
да, это я уже понял. Спасибо)
источник

И

Игорь Казаков in StartAndroid Ru Testing
Ребята помогите, есть тестируемый класс который показывает фрагменты, когда я уже в тесте вызываю метод, который показывает фрагмент (создает его и транзакцией добавляет), то у фрагмента не вызываются методы жизненного цикла, кроме onCreate, а мне нужны и остальные: onCreateView,  onViewCreated
источник
2019 July 30

AP

Andrey Pomazkin in StartAndroid Ru Testing
привет
вот тут https://medium.com/@fabioCollini/android-testing-using-dagger-2-mockito-and-a-custom-junit-rule-c8487ed01b56
описан тест, с тестовым компонентом и модулем, которые вызываются из тестового класса. Каким образом можно сделать make project так, чтобы класс DaggerTestComponent собрался?
источник

AP

Andrey Pomazkin in StartAndroid Ru Testing
Nikolay
я к тому что может твой презентер чтото там сохранил
вобщем, поставил на каждый
verify(mockedObject, timeout(10000)).someMethid();
таймаут и все тесты стали норм работать.
То есть получается, что мои асинхронные методы в презенторе не сразу вызывают методы, которые я проверяю, поэтому тест зачастую успевает завершиться раньше, чем придет ответ
я так это понял. возможно, ошибаюсь
источник

N

Nikolay in StartAndroid Ru Testing
Andrey Pomazkin
вобщем, поставил на каждый
verify(mockedObject, timeout(10000)).someMethid();
таймаут и все тесты стали норм работать.
То есть получается, что мои асинхронные методы в презенторе не сразу вызывают методы, которые я проверяю, поэтому тест зачастую успевает завершиться раньше, чем придет ответ
я так это понял. возможно, ошибаюсь
Для этого есть runBlocking в корутинах, или специальный scheduler в Rx. Что ты используешь?
источник