gpt4 book ai didi

c - 如何导致sqlite3_initialize失败

转载 作者:行者123 更新时间:2023-12-03 17:50:09 26 4
gpt4 key购买 nike

我有以下使用 sqlite3 的 C 代码:

if(SQLITE_OK == sqlite3_initialize()) {
self->db_open_result = sqlite3_open(self->db_uri, &(self->db));
} else {
self->db_open_result = SQLITE_ERROR;
}

显然,我非常有信心代码是正确的,并且会按预期运行。但是,我正在使用 gcov/lcov 测量我的单元测试的代码覆盖率,我很好奇在这种情况下如何使我的覆盖率达到 100%。在正常情况下 sqlite3_initialize() 永远不会失败,所以 else 子句永远不会执行。

有没有办法在不完全破坏性的情况下导致失败?

最佳答案

您希望单元测试来测试您的代码。但是您还想知道您的所有测试代码都已正确运行。一种方法是使用“模拟”,即您用假的或“模拟”库替换您的实际库(例如 SQLite),然后针对这些假库运行您的程序。

这个库替换是在编译时还是在运行时完成确实是偶然的,但在 C 中,在编译时完成更容易。您可以手动进行模拟,也可以使用 Cmock 等工具.

在伪造的库中,您会引发各种错误和失败。值得注意的是,伪造的库甚至不需要任何事情,甚至不需要跟踪很多或任何状态,您通常可以通过返回“OK”或“FAIL”来取得很大进展。

关于c - 如何导致sqlite3_initialize失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10774356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com