是否可以编写一个运行时间超过 5 秒的“简单”SQLite 查询。
我正在我的应用程序中编写一些单元测试来记录慢速查询,为此,我想要一个我知道运行时间超过 5 或 10 秒的慢速查询,(并创建一个要引发/记录的警告) .
我正在考虑创建 10 个表,每个表中有 10 个条目,并对所有表进行连接选择。
但我不确定这是否是测试慢选择(而不是大返回集)的好方法。
我是 Postgres 的新手,因为我即将开始用它编写越来越多的代码(带有过程的脚本等),我想知道什么是“事实上的标准”(更多使用,更大的社区,开源等)它的单元测试框架。谷歌搜索我找到了一些选择。PgTap 是正确的选择吗?
我正在尝试将我的单元测试从 H2 迁移到 Postgresql。
目前,H2 为我提供了一个内存模式,这样每个连接都映射到一个唯一的模式、创建表、运行测试并删除模式。架构创建和销毁由 H2 自动处理。
单元测试同时运行。
在 Postgresql 中执行此操作的最佳方法是什么?具体来说,
更新:我在这里找到了一个相关的答案,但如果运行单元测试的进程被杀死,它无法删除模式。
我已经考虑这个问题很久了。
基本问题是:如何对存储过程进行单元测试?
我看到我可以相对容易地为经典意义上的函数设置单元测试(我的意思是它们得到零个或多个参数并返回一个值)。但是,如果我考虑一个看似简单的过程在某处插入一行的真实示例,并且在插入之前或之后有几个触发器执行此操作,那么即使定义“单元”的边界也非常困难。我应该只测试INSERT
它本身吗?我认为这相当简单——价值相对较低。我应该测试整个事件链的结果吗?除了这是否是单元测试的问题之外,设计一个合适的测试可能是一项相当艰巨的工作,其中会出现许多额外的问号。
然后是不断变化的数据的问题。在UPDATE
影响不止几行的情况下,每个可能受影响的行都必须以某种方式包含在测试用例中。s等的进一步困难DELETE
等等。
那么如何对存储过程进行单元测试呢?复杂性是否存在完全绝望的临界点?维护需要哪些资源?
编辑另一个小问题,基于 AlexKuznetsov 的回答:或者是否有一个门槛,在它之下它是完全没用的?
我目前正在使用 Liquibase 在每次测试运行之前在我的数据库中创建测试数据。
我遇到了一个问题,其中一些测试用例需要特殊数据,而另一些则需要表为空。
所以我决定尝试一下 Liquibase 上下文,只插入我当前测试用例真正需要的数据加上 - 在抽象超类中 - 每个测试用例需要的所有数据(用户帐户和东西)......
我想在每次运行之前清除表格,但是我似乎找不到任何关于这种情况的东西,除了dropAll()
,这似乎有点矫枉过正......
我不太确定这是否可能——因为外键和其他限制——但我想知道是否有一种方法可以删除所有表的内容而不完全删除它们?