Получение каталога документов iPhone в TestCases

Я запускаю тестовые примеры, в которых используется база данных sqlite для тестирования моего кода на симуляторе iPhone с использованием SenTestingkit по умолчанию, когда я пытаюсь получить домашний каталог одним из следующих способов.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];

or

NSString *home = NSHomeDirectory();

у меня неправильный путь, который указывает на следующую ванну

/Users/{user}/Library/Application Support/iPhone Simulator/5.1

и я не мог создать базу данных sqlite, есть идеи, как получить правильный путь в тестовых примерах?

Спасибо


person Mahmoud Adam    schedule 13.10.2012    source источник


Ответы (1)


Я нашел ответ :)

сначала мне нужно было определить, нахожусь ли я в TestCase или работаю над проектом, используя NSClassFromString для класса SenTest, а затем построить путь в соответствии с каждым случаем

if (NSClassFromString(@"SenTest") == nil) {
        // Running project -> path inside the Document folder
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *docsPath = [paths objectAtIndex:0];
        path = [docsPath stringByAppendingPathComponent:KDatabaseName];
    } else {
        // Test case -> path inside "UnitTests" folder in the project directory
        NSString *directory = [[NSFileManager defaultManager] currentDirectoryPath];
        path = [directory stringByAppendingPathComponent:@"UnitTests/"];
        path = [path stringByAppendingPathComponent:KDatabaseName];
    }
person Mahmoud Adam    schedule 14.10.2012
comment
Я пришел к той же проблеме. Есть ли способ заставить тестовый пример использовать тот же каталог документов, что и при запуске приложения. У меня есть некоторые важные значения и файлы для чтения (например, активация приложения). - person karim; 20.02.2013
comment
NSClassFromString(@SenTest) возвращает ноль в цели приложения И цели модульного теста. Я предполагаю, что имя изменилось сейчас - person Ben Clayton; 17.02.2015
comment
.. измените @SenTest на @XCTestCase, и код теперь работает как задумано - person Ben Clayton; 17.02.2015