1

全部:

我有以下单元测试类(显示的实现文件):

@implementation SampleTests {
    A* c;
    NSString* token;
}

- (void)setUp
{
    [super setUp];

    // Set-up code here.
    c = [[A alloc] init];
}

- (void)tearDown
{
    // Tear-down code here.

    [super tearDown];
}

- (void)testA
{
    token = @"sample";
}

-(void)testB
{
    [c method:token]; // <-- fails because token is nil, but c has a correct value. Why!
}

@end

当我运行测试时,testB 失败,因为 token 为 nil,但是 c 没问题,那为什么它token被破坏了?

4

3 回答 3

2

每次运行单元测试时,都会独立调用每个测试用例。在每个测试用例运行之前,调用 setUp 方法,之后调用 tearDown 方法。

所以如果你想在测试之间共享令牌,你应该添加

token = @"sample"; // or smth else 

到您的设置方法。

于 2013-04-08T14:40:04.773 回答
1

据我所知,当前实现按字母顺序运行测试方法,因此您的示例应该可以正常运行。

通常,如果我想先测试某些东西,我会命名方法test1_criticalFeaturetest2_dependentFeatures

于 2013-04-08T15:04:45.603 回答
0

无法保证测试方法的执行顺序,因此可能会在它们并行testB运行之前testA甚至将来运行。

于 2013-04-08T14:44:16.977 回答