我正在爲我的sqlite數據庫類編寫單元測試用例。我在這個班有五個公共API。執行整個測試套件時,單元測試用例失敗
我的測試用例是這樣的東西如下:
+ (void)setUp { // Note, this is class method and hence called only once during start of this test suite.
// Code to delete the existing sqlite DB file.
}
- (void)testDBManagerSingletonInstance {
DBManager *dbMgr = [DBManager getSharedInstance];
DBManager *dbMgr1 = [[DBManager alloc] init];
XCTAssertEqualObjects(dbMgr, dbMgr1);
}
- (void)testSaveAndDeleteNicknameAPI {
// Multiple Assert statements in this test.
}
- (void)testAllAccountStatusAPIs {
// Multiple Assert statements in this test.
}
每一個單元測試沒有任何錯誤被執行。但是當整個測試套件被執行時它會失敗。
也許,我知道根本原因失敗。這是因爲當整個測試套件被執行時,所有測試並行執行,並且同時發生更新 - 刪除操作。因此,當所有的單元測試運行時都會失敗。
但我不知道我該如何解決這個問題,因爲這不是異步,因此我不能使用XCExpectation
類。
需要幫助解決&瞭解問題。
你已經說過答案..如果測試都使用相同的數據庫,那麼它的內容都處於不斷變化的狀態,正如你所說......解決方案是讓每個單元測試看看單獨的數據庫或單獨的實例或分開表格......或強制順序執行。測試時的規則是你必須知道數據庫的內容..在這種情況下,你永遠不會知道,因爲它正在被多個進程同時設置和測試。 – Spoon