Email or username:

Password:

Forgot your password?
427 posts total
Tech Thread

Согласно TDD я должен написать сначала спецификацию, затем -- тесты, и только потом -- код. Но каким образом я могу написать тесты для функций, которые вызывают системные функции?

Ясно, что их нужно изолировать: для этого используются mock'и, stub'ы и иже с ними. Однако для этого я должен заранее знать, какие функции будут использоваться в реализации. Но это знать невозможно, поскольку сначала идут тесты! Более того, странно опираться при тестировании на реализацию, а не спецификацию: реализация может поменяться спустя некоторое время, а сигнатура тестируемой функции должна быть неизменной.

К тому же, сами вызываемые системные функции могут варьироваться: на Linux для определённой цели может использоваться epoll, а в FreeBSD для той же цели kqueue. Как написать тесты, чтобы их не пришлось бы переписывать для каждой платформы в отдельности? Хотелось бы написать их написать один раз, опираясь на спецификацию (которая пишется тоже один раз) и забыть о них. @tech by @devadideva

Согласно TDD я должен написать сначала спецификацию, затем -- тесты, и только потом -- код. Но каким образом я могу написать тесты для функций, которые вызывают системные функции?

Ясно, что их нужно изолировать: для этого используются mock'и, stub'ы и иже с ними. Однако для этого я должен заранее знать, какие функции будут использоваться в реализации. Но это знать невозможно, поскольку сначала идут тесты! Более того, странно опираться при тестировании на реализацию, а не спецификацию: реализация...

Show previous comments
[DATA EXPUNGED]
DELETED

@devadideva

>Но каким образом я могу написать тесты для функций, которые вызывают системные функции?

Для начала надо понять будет ли там логика, которую надо покрывать юнит тестами. Тестировать просто вызовы можно, если начальство покрытия требует.

У тебя какое-то странное понимание тдд. Ибо это итеративный процесс. Посмотри какое-нибудь видео, где люди практический пример показывают.

vCarabis

@tech
Спецификации должны чётко описывать на каком наборе входных параметров какой результат ожидается. Этого вполне достаточно чтобы написать тест. Что происходит там внутри не должно влиять на это.

Другой вопрос что далеко не все функции имеет смысл тестировать. Например функции с тривиальной логикой. Ну и как сказали выше, если писать код с прицелом на тесты, моки и т.д., работать это все будет не очень хорошо, да и поддержка такого кода может быть слишком трудоемка.
@devadideva

Tech Thread

если у DSi (что так и есть) проц ARM, то почему мы технически не можем (или всё же ли можем) запустить ОС DSi чисто на RPi?
Я пока из проблем лишь вижу что у DSi ARM9+ARM7, а у RPi (беру инфу с RPi3B, т.к. у меня имено эта малинка) один ARMv8 (+AArch64), но вроде что одно ARM, что другое ARM, только более современное.
@tech (?) by @latte

MrClon

@latte во всяких микроконтроллерах вроде STM32C0 тоже ARM. ARM это широкое семейство процов, бинарная совместимость там не предполагается. Как минимум в исходной железке может быть какая-то переферия к которой нет (или есть, но работает чуть по другому) к которой обращается код. И едва-ли в коде предусмеотрены какие-то фолбэки на случай если в переферия не ответила как ожидалось

yoshir

@tech
наверное по тем же причинам что мешают нам запускать OS PS4 на компах
@latte @ru

mittorn

@tech @latte ну как минимум ISA поддерживается, надо чтобы endianess совпадал, тогда будет теоретичкская возможность запустить в режиме виртуализации, но будут проблемы из-за всякой переферии, которую ОС ожидает и пытается инициализировать

Tech Thread

Можно ли через адб вынести гугл сервисы с телефона до след сброса ? по максимум удалить не нужное
@tech by @surver

Tech Thread

Я правильно понимаю, если я при разметке диска вынес /home в отдельный раздел, то в будущем смогу переустановить систему без необходимости куда-то сохранять данные?
В таком случае вопрос: сколько оставлять под корень?

@tech

#Linux by @timur

Show previous comments
Digitual :ablobcatwave:

@tech
нормальные люди так и делают, это удобно. Под корень в зависимости сколько и какой софт. Я для корня использую 30Гб уже очень давно, все помещается.

1lyaP

@tech @timur Нет, конечно. Ты сможешь переустанавливать систему без необходимости сохранять этот самый /home.

Tech Thread

Верно ли, что пакеты go должны быть совместимы как с оригинальной реализацией go, так и с gcc-go? Если нет, то где брать пакеты специально для gcc-go? Если да, то, полагаю, что по крайней мере один из моих пакетов сломан (net@v0.8.0/internal/socket: отсутствует файл textflag.h) и это повод написать разработчикам пакета? @tech by @devadideva

Мя :sparkles_lesbian:

@devadideva а разве это не gcc-go должен быть совместим с оригиналом?

Go Up