问题标签 [database-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
1600 浏览

tdd - 数据库集成测试

当您仅使用数据访问层或大多数应用程序堆栈进行集成测试时。如果多个测试在同一个数据库上运行,那么防止多个测试相互冲突的最佳方法是什么?

0 投票
2 回答
2756 浏览

nhibernate - 我可以在不提交事务的情况下刷新我的 NHibernate 会话并获得一个新会话吗?

我正在使用 Castle ActiveRecord 进行持久性,并且我正在尝试为我的持久性测试编写一个基类,它将执行以下操作:

  • 为每个测试用例打开一个事务并在测试用例结束时将其回滚,这样我就可以为每个测试用例获得一个干净的数据库,而无需为每个测试用例重建架构。
  • 提供刷新我的 NHibernate 会话并在测试过程中获得一个新会话的能力,这样我就知道我的持久性操作确实影响了数据库,而不仅仅是 NHibernate 会话。

为了证明我的基类 ( ARTestBase) 有效,我提出了以下示例测试。

这是我在基类上的最大努力。它正确实现Flush()了,所以第三个测试用例通过了。但是它不会回滚事务,因此第二个测试失败。

请注意,我正在使用带有内存数据库的自定义 SQLite 提供程序。我的自定义提供程序取自这篇博文,它始终保持连接打开以维护架构。删除它并使用常规 SQL Server 数据库不会改变行为。

有没有办法实现所需的行为?

0 投票
3 回答
721 浏览

unit-testing - DbUnit如何防范多个测试同时运行?

我正在为一个项目开发一个测试环境,并且正在研究使用 DbUnit.NET 来进行大量的数据库交互测试。不过,我确实有一个非常大的问题:

我们正在针对 Oracle 运行,并且为每个开发人员设置单独的测试数据库实例确实不可行(特别是因为我们只有 1 个已经时间紧迫的 DBA)。这意味着所有开发人员和持续集成服务器都需要使用相同的数据库模式。

那么,关于这个问题:有没有一种好方法可以防止超过 1 人同时进行测试?很容易在 db 表中放置一条记录以指示测试正在运行,然后在测试完成后将其删除,但是 NUnit 没有任何方法可以在测试会话开始和结束时运行某些东西。

还有其他想法吗?似乎这应该是一个非常普遍的问题......或者每个人实际上是否为每个可能运行测试的开发人员/测试人员运行单独的数据库实例?

0 投票
3 回答
236 浏览

sql - 什么是做数据库单元测试的好方法

我们正在使用 Power Designer 进行数据库建模,每当模型中的某些内容(列名、数据类型等)发生更改时,我们都会返回并测试所有依赖的存储过程并相应地修复它们。

什么是对数据库进行单元测试的最佳工具。

谢谢

0 投票
3 回答
162 浏览

php - 测试数据库的最佳方法是什么(MYSQL 特定)

现在我正在测试数据库中的一些东西。这是一个wordpress数据库。我必须写入和删除并对其进行其他操作。如您所知,它具有索引机制,始终使每个新帖子都继承下一个可能的最高 ID。

请考虑此数据库是已使用数据库的副本。以前写过。所以,我需要确保当我完成测试时,它会是一样的

现在,我唯一的解决方案是进行备份。因此,如果我在计划测试的某些部分结束,我将备份它并在另一个副本上开始下一次测试。

幸运的是,数据库的大小只是很小的一个。所以删除,复制和备份会很容易。但我知道这种数据库测试方式只是部分解决方案。它迫使我创建太多备份副本。如果数据库更大,我不知道该怎么办。这将是一场漫长的测试噩梦。

所以我想知道有没有像回滚一样工作的解决方案。所以它只会锁定数据库并将新条目作为某种缓存。我可以删除它或将其写入数据库。

我使用 mysql 和 phpmyadmin 并使用它来开发一些自定义解决方案。

编辑 ::: 在开发 PHP 解决方案时如何有效地对数据库进行测试?

0 投票
6 回答
3016 浏览

unit-testing - 如何使用 NHibernate 删除所有数据库数据?

是否可以使用 NHibernate 删除数据库中的所有数据。我想在开始每个单元测试之前这样做。目前我删除了我的数据库并再次创建它,但这对我来说不是可接受的解决方案。

==================================================== ========

好的,这是结果。我正在数据库(Postgre)上对此进行测试。我将测试 CreateSchema(1)、DanP 解决方案(2) 和 apollodude217 解决方案(3)。我用每种方法运行测试 5 次并取平均时间。

第 1 轮 - 10 次测试
(1) - ~26 秒
(2) - 9,0 秒
(3) - 9,3 秒

第 2 轮 - 100 次测试
(1) - 来吧,我不会在我的机器上这样做
(2) - 12.6 秒
(3) - 18.6 秒

我认为没有必要用更多的测试来测试。

0 投票
1 回答
474 浏览

android - 如何在 Android 中填充测试数据库?

我有一个扩展 ProviderTestCase2<> 的测试类。

我想用一些 .db 文件中的数据填充这个测试类数据库。

是否有一些特殊的方法可以将一些 .db 文件推送到 ProviderTestCase2 的模拟上下文中?

否则哪种方式更容易从 .db 文件填充数据库?!

非常感谢!!

0 投票
8 回答
45184 浏览

database - 如何进行数据库单元测试?

我听说在开发使用数据库的应用程序时,您应该进行数据库单元测试。

数据库单元测试的最佳实践是什么?进行数据库单元测试时主要关注什么以及如何“正确”地进行测试?

0 投票
4 回答
7798 浏览

mysql - MySQL单元测试的最佳工具

我最近在 MySQL 中做了很多 sproc 编程。
我必须说我喜欢它。很多。

然而调试这些婴儿很糟糕。
任何人都知道任何可以在 My MySQL 调试中带来快乐的工具吗?

0 投票
1 回答
271 浏览

database - 微软演示数据库版权,开源演示数据库?

在我的LGPLv3许可的开源项目中,我需要一个小型演示数据库。项目针对多个数据库,因此为了测试的一致性,最好有一些简单的 SQL 脚本和所有数据库的相同演示数据。

Microsoft 提供了一个用于 SQL Server 的小型演示数据库,称为pubs (与Northwind一起包含在 SQL Server 2000 的演示数据库包中)。它有两种形式:作为 SQL 脚本和插入式数据库文件。脚本受版权保护如下:

我修改了一个脚本来为 SQLite 生成具有相同数据的数据库。但现在我意识到这可能不是一个好主意。所以,我想澄清一些问题:

  1. 我可以并且应该在我的项目中包含原始 SQL 脚本/MDF 文件 Microsoft 脚本并保留版权吗?
  2. 我可以而且应该包含修改后的 SQL 脚本/sqlite 数据库,如果可以,谁将拥有该脚本/数据库的版权?
  3. 是否有任何开源演示数据库可以用于我的目的(包括和修改 SQL 脚本)?比如这个

我几乎可以肯定,前两个答案是“否”,第三个答案是“是”。但我还不确定。

更新: 发现另外两个基础BIRTChinook首先是 Eclipse 许可证,第二个是 MS-PL,我再次不确定是否可以使用它们。

更新 2: 似乎没什么大不了的。我意识到我可以为代码的不同部分使用独立的许可证。因为它不是项目代码的重要部分,而只是一个测试数据库,所以我可以使用它的原始许可证 BSD、Eclipse、MS-PL 来工作和包含它。

所以现在的主要问题是,我应该使用哪个?条件是它必须相当简单(大约 10 个表)并且脚本应该在大多数数据库引擎上执行而无需进行重大修改。Chinook似乎是一个理想的选择,但它不是来自主要软件提供商,我想使用一些已经流行且“经过测试”的数据库。

最后更新: 经过一些重新/搜索后,我放弃了让一个测试数据库来统治的想法,因为这极大地限制了数据库引擎的某些功能并且测试变得不切实际。所以我会为每个引擎使用不同的数据库。至于 MS 数据库,我认为这只是妄想症,MS 可能不会因为任何事情起诉我 :)。