Могут ли тестовые методы модульных тестов НЕ объявлены в файле .h?

Могут ли тестовые методы модульных тестов НЕ объявлены в файле .h?

Если модульные тесты не могут, должен ли я объявлять все методы в файле .h только для модульных тестов? Это непродуктивно или того стоит?


person user3178926    schedule 01.04.2014    source источник
comment
Есть много вопросов о частных методах модульного тестирования с ответами stackoverflow.com/search?q=unit+testing+private +методы   -  person BergQuester    schedule 01.04.2014


Ответы (1)


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

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

person David Berry    schedule 01.04.2014
comment
Я проголосую за это. Мне нравится иметь категорию с именем Private во всех моих классах для вызываемых частных методов в тестах. Однако стоит отметить, что я никогда не тестирую приватные методы. Я тестирую общедоступные методы на предмет их задокументированного поведения и при необходимости вызываю приватные методы. - person Ryan Poolos; 01.04.2014
comment
@RyanPoolos, это, вероятно, лучший способ заявить об этом. - person David Berry; 01.04.2014