Objective c StatsertTrue没有像我预期的那样工作
我在单元测试中有这两行代码。 如果我注释掉Objective c StatsertTrue没有像我预期的那样工作,objective-c,ios,xcode,unit-testing,Objective C,Ios,Xcode,Unit Testing,我在单元测试中有这两行代码。 如果我注释掉statsertTrue测试,则数据写入文件时不会出现任何问题,写入文件时为YES BOOL writeResult = [winePDF writeToFile:wineDocumentDirectoryFilename atomically:YES]; STAssertTrue((writeResult), @"Didn't write to file"); 我希望这次考试能通过,但失败了。我试过了 STAssertEquals(YES, writ
statsertTrue
测试,则数据写入文件时不会出现任何问题,写入文件时为YES
BOOL writeResult = [winePDF writeToFile:wineDocumentDirectoryFilename atomically:YES];
STAssertTrue((writeResult), @"Didn't write to file");
我希望这次考试能通过,但失败了。我试过了
STAssertEquals(YES, writeResult, @"Didn't write to file");
这也失败了
在单元测试方面做得不多,所以在期待您的信息灵通的回答时,我打了个耳光。您的代码在我看来是正确的。你确定写作成功了吗?你确定winePDF是非nill吗 我建议在第一行之前添加以下内容:
STAssertNotNil(winePDF, @"winePDF should not be nil");
为了获得更好的调试选项,可以使用以下代码:
if( ! writeResult) {
STFail(@"Didn't write to file");
}
因此,您将确定您的测试代码没有工作,或者您的代码有问题。是的,我已经检查过了。如果我在没有断言的情况下写入文件,则会创建该文件。似乎是检查行为导致了问题?此测试是在函数返回后运行的,因此,如果断言不起作用,您仍然应该看到该文件。您是否尝试记录返回值?您可能希望在单元测试之前和/或之后添加一些内容来删除文件,以防成功运行后留下一个文件。这里只有三个变量(writeResult、winePDF、wineDocumentDirectoryFilename),因此只需记录这三个变量就可以找出问题所在。是的,确切地冒着冒犯他的风险,这是一个基本调试可以解决的问题。但不是我们的。请尝试按如下方式更改写入文件的代码:
BOOL writeResult=[winePDF writeToFile:wineDocumentDirectoryFilename原子性:否];statsertTrue((writeResult),@“未写入文件”)代码>