roman G
У нас тоже, но тут я завязался в спор
roman G
Про время сборки большого проекта
Владислав
Andrew
У меня, например, мой проект 40 секунд. А у моего qa - минут 15. Но у него ноут слабенький.
Artem
у меня проект собирается на новом ноуте 40-60 сек, на старом 6-12)
Artem
так что да
Artem
очень много факторов)
Андрей
Roman
roman G
Dyno
Такой вопрос: надо хранить много картинок в приложении, открывается обозреватель и вы выбираете картинку, она добавляется в приложение. как сохранять эти картинки? и куда? в бд или шаред?
roman G
Roman
Микола
Konstantin
это ты как градл настроил?
у меня не такой уж большой проект, но сейчас пробую новый с разбивкой по модулям, типа побыстрее должно быть
Roman
Это без инстант ран?
Konstantin
без
Dyno
Roman
Konstantin
Konstantin
а что за машина?
стационар, 16 гб, проц там чет 4 ядра по 3.3 или около того
Roman
Roman
тоже 16 гб
Roman
проект 20 модулей
roman G
Да я уверен, что у него не больше 7к строк
roman G
Поэтому так
Roman
даггер по любому тормозит билд, учитывая, что у нас вообще всё на нём
Anonymous
всем привет
Anonymous
Нужно создать андроид приложение с функционалом бандлера
При запуске приложения скачивать и устанавливать ( или чтобы они были внутри) stunell и openvpn
Затем скачивать и устанавливать конфигурационные файлы для этого софта
Далее управлять состоянием этих программ
Подскажите к кому обратиться :)
Konstantin
Vitaly
Как мне протестировать этот участок кода?
public void onCreate(@NonNull String addressId, @NonNull String senderId){
this.addressId = addressId;
messageBus.subscribe(this);
// Add to message the base data: "sender" and "addressee"
messageEditor.setAddressId(addressId);
messageEditor.setSenderId(senderId);
}
В messageEditor приходит две строки, но как мне проверить, что они действительно туда пришли?
Vitaly
Извините за слишком нубские вопросы
Саша Батанова
Ребята, меня озадачил дизайнер) какая дефолтаная высота у дефолтного edittext для одной строки?)
Глеб
Anonymous
Саша Батанова
оке) для дефолтного 12sp)
Anonymous
Дизайнер в пикселях хочет ответ получить?))
Глеб
Блин что вы спорите? откройте и посмотрите апп-компат стили - там всё прописано!
Konstantin
в зеплин чето такое тоже добавляли емнип
Artem
Artem
https://material.io/design/components/text-fields.html#spec
Vitaly
Alexander
Vitaly
Vitaly
Там нужно как-то получить результат
Vitaly
Но у messageEditor нету геттеров
Vitaly
Alexander
Но для этого мне разве не надо будет его передать в Presenter?
Архитектура вообще не важна, нужно проверить конкретный метод и факт передачи полей в объект messageEditor. Для этого надо создать мок-объект, любым способом засунуть его в текущий класс, вызвать метод и сделать Mockito.verify(messageEditor).setAddressId(addressId);, и со вторым полем тоже
Vitaly
Блин, почему в Dagger 2 нельзя создавать моки?
Vitaly
Я бы прям там создал mock этого объекта, а потом проверил через Verify, иначе очень сложно грамотно засунуть этот объект в класс
Vitaly
Делать сеттер отдельно для тестов, передавать в конструкторе - всё это как костыли выглядит
Alexander
всем привет.
кто-нибудь имел опыт написания рекордера на open sl es? Ну или работал хотя бы с low latency audio
Владислав
появился ещё вопрос по Paging library. Как правильно вытянуть данные для paging list из хранилища, если хранилище возвращает целиком list? через subList его обрабатывать ?
Roman
Himars
Дагер в юнит тестах не участвует же
Да он там и не нужен
Roman
Roman
Пока что напрямую передаю в тесты без даггера
Himars
Даггер полезен когда нужно подменить например репозиторий в интеграционных тестах (на основе UI тестов)
Himars
но я могу быть не прав :D
Himars
Серьёзно? А я тут пытаюсь запизнуть его затолкать, всеми способами втащить в эти модульные тесты
Вам же выше написали как покрыть тестами ваш случай. Нет?
Если нужно постестить Presenter, то мокаем view и все остальное с чем работает презентер и передаем в конструктор презентера при создании. После чего имитируем вызовы методов презентера от вью и смотрим что он дергает и с какими параметрами на моках
То же самое делаете с другими класами которые нужно потестить:
1. Мокаем все зависимости класа который необходимо покрыть тестами
2. Настраиваем возвращаемые значения моков
3. Дергаем необходимые в конкретном случае методы тестируемого обьекта
4. Проверяем совершались ли ожидаемые вызовы методов у моков с ожидаемыми параметрами
Vitaly
Vitaly
Но у меня есть объекты, которые создаются в самом Presenter, которые используют контекст Application, вот они и мешаются
Himars
Himars
Но у меня есть объекты, которые создаются в самом Presenter, которые используют контекст Application, вот они и мешаются
Для того что-бы код был тестируемый необходимо кодить следуя неким правилам, например:
Принципы инверсии управления
1. Модули верхних уровней не должны зависеть от модулей нижних уровней. Модули обоих уровней должны зависеть от абстракций.
2. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Недостатки дизайна, которые устраняются с применением Инверсии управления
1. Жесткость. Изменение одного модуля ведет к изменению других модулей.
2. Хрупкость. Изменения в одной части приводят к неконтролируемым ошибкам в других частях программы.
3. Неподвижность. Модуль сложно отделить от остальной части приложения для повторного использования и тестирования
P.S. плюс не забывать по максимуму абстрагироваться от Android фреймворка
Alex
Кто нибудь может поделиться толковой реализацией роутинга экранов.
Alex
Спасибо. Глянул.
Konstantin
а ктонибудь за все эти годы написал что нибудь еще кроме гитфокса в опенсорсе? )
Konstantin
ну, уровня сложно примерно такого же
Konstantin
в архитектуре админ
Konstantin
вообще что ты там такого хочешь узнать, все же можно было поспрашивать в чятиках
Dmitry
Комрады, как сделать отображение времени сообщений как в Telegram и WhatsApp?
Мой кореш-программист утверждает, что сделать отображение времени в сообщениях как в Telegram и WhatsApp невозможно без каких-то вычислений строк, мол, это большая проблема. Именно на телефоне нужно рассчитать длину строки на экране, померить текст и рассчитать, какие слова не влезают на часы. Потом внедрить алгоритм для переноса слов и т.д. Это действительно так? Или есть какие-то хаки как в HTML-верстке, типа dev-аналога отдельному div и padding: -10px ?
Сейчас у нас время всегда отдельной строкой в области сообщений, что не экономит место на экране чата. Как хочу: