2012-07-02 188 views
1

我在单元测试中有这两行。 如果我注释掉STAssertTrue测试,数据将被写入文件而不会出现问题,并且写入文件的格式为YESSTAssertTrue不工作,因为我期望

BOOL writeResult = [winePDF writeToFile:wineDocumentDirectoryFilename atomically:YES]; 
STAssertTrue((writeResult), @"Didn't write to file"); 

我希望这个测试通过,但它会失败。我试过

STAssertEquals(YES, writeResult, @"Didn't write to file"); 

哪个也失败了。

在单元测试中没有做太多的事情,所以在我的额头上打量着,期待着你有充分的答案。

回答

1

你的代码看起来对我来说是正确的。你确定写作成功吗?你确定winePDF是不是不适合?

我建议你第一行前添加此:

STAssertNotNil(winePDF, @"winePDF should not be nil"); 
+0

是的,我查过了。如果我在没有声明的情况下写入文件,则会创建该文件。看来如果检查行为导致问题? –

+1

该测试在函数返回后运行,因此如果声明不起作用,您仍然应该看到该文件。你有没有尝试记录返回值? –

+1

您可能需要在单元测试中添加某些内容,以便在测试之前和/或之后删除该文件,以防成功运行后留下一个文件。 – jrc

2

您可以使用下面的代码进行调试的更好的选择:

if(! writeResult) { 
    STFail(@"Didn't write to file"); 
} 

所以,你一定会要么你的测试代码不工作或者你的代码有问题。

+0

您是否尝试更改写入文件的代码,如下所示: 'BOOL writeResult = [winePDF writeToFile:wineDocumentDirectoryFilename atomically:NO]; ((writeResult),@“没有写入文件”);' – rshahriar

相关问题