3

我已经开始使用 Xcode4 的 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,清理,重建等。

4

1 回答 1

1

不是真正的答案,而是一个建议:

你说它让你的代码更冗长,更难阅读?为什么不对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);
于 2011-07-27T13:39:01.353 回答