我正在为我的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