我有两个C ++函数,每个函数构造一个SQLite数据库。
第一个函数构造数据库版本1,然后通过添加自第一个版本以来添加到数据库的所有表/列,将其升级到最新版本。另一个函数构造一个已经是最新版本的数据库。因此,每个函数都会为一个数据库提供所有必需的表和列,但没有值。
我希望编写一个比较这两个函数结果的单元测试。我想测试它们具有完全相同的表和列,并且所有列都具有相同的CHECK和NOT NULL约束。我只需要比较列和表,因为此时数据库中没有值。
我更希望以人类可读的形式获得差异(将它们放在错误信息中),但布尔值(不同/不同)也没问题。
我怎么能这样做,因为两个数据库都有不同的变量,我不能将它们组合起来?
还有其他问题建议使用外部应用程序,但是我可以在C ++中以简单的方式进行吗?一种可能性是为每个数据库执行一些SQL命令,并在for循环中比较结果,但我需要哪些命令?
答案 0 :(得分:2)
您可以阅读sqlite_master
表来阅读用于创建每个表的SQL并进行比较:
SELECT name, type, sql FROM sqlite_master;
有关sqlite_master
的详细信息,请参阅SQLite documentation。