extern NSString * константы nil для тестовой цели

Недавно я добавил тестовую цель (используя XCTest) в свое приложение в Xcode 5.1. Кажется, все работает нормально, я могу использовать все классы и т. д. из основного приложения, но некоторые константы extern NSString * (т. е. объявленные в файле .h, определенные в файле .m) из моего приложения равны нулю при использовании в тестовый код. Я попытался включить файл .m в исходники компиляции для тестовой цели, что исправляет их как нулевые, но создает другие проблемы (класс, определенный в этом файле .m, затем существует в дубликате, т.е. тестовая цель имеет другой экземпляр класса для класса ). Я тестирую iPhone 5S под управлением iOS 7.1.

Любая помощь приветствуется.


person Patrick Pijnappel    schedule 23.05.2014    source источник
comment
ИМХО, определения extern NSString * обычно не тестируются (поэтому требуется рефакторинг).   -  person 9dan    schedule 23.05.2014
comment
Это ключи ошибок, которые мне нужно использовать в тестах, чтобы увидеть, пропущена ли правильная ошибка.   -  person Patrick Pijnappel    schedule 24.05.2014


Ответы (1)


В настоящее время вы определяете свои настоящие объекты NSString в верхней части файла .m, независимо и, возможно, даже вне объявления категории «@interface» и кода «@implementation» для некоторого объекта.

Почему бы не создать НОВЫЙ файл .m, который НЕ содержит "@implementation", а содержит только Константы NSString?

А затем добавьте этот новый файл .m (который не имеет связанного класса) в качестве скомпилированного файла как в вашем приложении, так и в ваших тестовых целях.

person Michael Dautermann    schedule 24.05.2014
comment
Да, я просто разделю константы в их собственном файле, хотя мне было интересно, есть ли лучший способ сделать это, не делаю ли я что-то не так. - person Patrick Pijnappel; 25.05.2014