我是 Objective-C 的新手,我正在尝试立即开始使用 TestDrivenDevelopment,因为我发现它确实很可靠,至少当测试通过时。
在此之前,我制作了一些 Java 教程,对 TDD 有了一些了解。Brett Schucherts 视频教程,他一步一步编写完整的 RPNCalculator 是一个金矿,可以通过观看他的操作来学习这些东西。
为了减少代码重复,例如,您可以这样做:
@Before
public void init() {
/* Stuff that which will be set up before the call of each test method/*
}
然后在您在 Java 中的 TestClass 中进行的每个测试之前调用它。
这是我想在 Objective-C + Xcode 中实现的。我应该提一下,我正在使用 Xcode 4.3(最新版本)并且我正在使用内置的 TestFramework。
我在网络上找到的唯一与我正在寻找的内容相近的是SO 上的答案。
不幸的是,我无法重现所描述的做事方式。一个最小的可运行示例和/或更详细的新手解释将非常棒,非常感谢!
顺便说一句,对不起英语不好。还在学习语言。:-)
编辑:
这是一个不起作用的最小示例。也许有人可以告诉我出了什么问题。Xcode 似乎无法识别board
测试方法的主体内部。
#import <SenTestingKit/SenTestingKit.h>
@interface ABoardShould : SenTestCase
@end
#import "ABoardShould.h"
@implementation ABoardShould
- (void)setUp
{
[super setUp];
int rowCount = 6;
int columnCount = 7;
Board *board = [[Board alloc] initWithShapeRowCount:rowCount andColumnCount:columnCount];
}
- (void)tearDown
{
// Tear-down code here.
[super tearDown];
}
- (void)testHaveItsShapeSetWhenInitialised {
STAssertEquals([board rowCount], rowCount, @"");
STAssertEquals([board columnCount], columnCount, @"");
}
- (void)testHaveTheDimensionsOfItsBoardMatchTheGivenShape {
NSMutableArray *expectedFields = [[NSMutableArray alloc] initWithCapacity:columnCount*rowCount];
for(int i=0; i < (rowCount*columnCount); i++) [expectedFields addObject: [NSNumber numberWithInt: 0]];
STAssertEquals([expectedFields count], [[board fields] count], @"");
}