2012-07-02 50 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

相關問題