Завершение XCode внутри макросов STAssert * () - PullRequest
3 голосов
/ 22 июля 2011

Я начал использовать средства XT4 SenTest для модульного тестирования.Это работает довольно хорошо, но ...

Xcode не предлагает завершение кода предложения внутри STAssert*() макросов.

Мне нравится писать простые выражения прямо вутверждение, чтобы сохранить нажатия клавиш и экранную недвижимость:

STAssertTrue(mydoc.isInitialized, nil);
STAssertTrue(mydoc.pageCount == 2, nil);

Проблема, с которой я столкнулся, заключается в том, что Xcode не предлагает завершение кода, пока я пишу выражение в утверждениях.

Это большой облом в контексте модульных тестов, где завершение кода может быть быстрым и удобным способом напомнить себе об оставшихся свойствах и методах, для которых вам нужно написать утверждения.Не говоря уже об обычных преимуществах завершения.

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

BOOL b = NO;

b = mydoc.isInitialized;
STAssertTrue(b, nil);

b = mydoc.pageCount == 2;
STAssertTrue(b, nil);

Я бы действительно не хотелдолжен делать такие вещи.Это более многословно, труднее читать и делает сообщения об ошибках модульного теста XCode менее значимыми.

Есть идеи?Я удалил каталог производных данных, перезагрузил Xcode, очистил, перестроил и т. Д.

1 Ответ

1 голос
/ 27 июля 2011

Не совсем ответ, а предложение:

Вы говорите, что это делает ваш код более многословным и трудным для чтения? Почему бы не использовать значимые имена для ваших place holder переменных, и вы можете повысить читабельность своих тестов, например

BOOL isDocumentInitialized = mydoc.initialized;
STAssertTrue(isDocumentInitialized, @"myDoc should be initialized");

// You may even wish to change the naming convention on the object method to be
- (BOOL)isInitialized; // instead of - (BOOL)initialized;
// It is perhaps slightly clearer and follows other naming conventions 

BOOL hasTwoPages = (2 == mydoc.pageCount);
STAssertTrue(hasTwoPages, @"myDoc should have 2 pages but has %d pages", mydoc.pageCount);
...