2

我是 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], @"");
}
4

1 回答 1

3

必须调用测试用例类的 setup 和 teardown 方法,setUp并且tearDown. 这在Xcode 单元测试指南:编写测试用例方法中有所描述。

在您的示例中,boardsetUp方法中的局部变量。您需要将其设为实例变量。

于 2012-04-29T03:34:13.217 回答