如何在 DBFit 中管理不同的 DBMS?

How can I manage different DBMS in DBFit?

抱歉我的英语不好,我会说西班牙语。

我有一个适用于 Oracle 的测试套件,现在我需要维护同一个套件,但也适用于 SQLServer。

查询相同,但略有不同(日期函数等)。

管理需要多 dbms 的套件的最佳方法是什么?

谢谢

我没有任何使用 DbFit 的经验,所以我的回答很笼统。希望您可以将其用作您具体问题的基础。

对我来说,管理略有不同的测试套件会让我想到以下方法之一:

  1. 使用符号链接维护一组页面,为每个环境创建一个套件(子 wiki)。这些页面定义了测试用例,每个环境都有一个定义符号 ('wiki variables') 的根页面和一个 link 到页面集。
  2. (使用 Slim 时)每个 environment/database 系统使用不同的场景。您可以根据当前应测试的内容包含不同的页面来定义场景(每个场景都使用相同的名称定义场景,但定义不同)。或者在你的场景调用中使用符号来根据当前环境调用不同的场景。当然,在这两种情况下,您都可以共享适用于所有情况的场景。
  3. 每个环境使用不同的 fixture,允许相同方法的不同实现。

我相信您对 DbFit 的使用不包括选项 2 和 3,因此选项 1 似乎是可行的。具体来说,我认为这将意味着为查询部分定义符号(例如 !define QUERY_1 {...})和需要因 DBMS 而异的连接字符串。在测试用例中,您不会对这些进行硬编码,而是包括对符号的引用(例如 ${QUERY_1})。 (另请参阅我对 的回答)

当然,这一切都取决于您的测试需求究竟是什么。我倾向于使用 FitNesse 对应用程序进行验收测试。所以我会测试应用程序最终用户或 service/API 功能而不是数据库查询。在这种情况下,我不会 运行 针对所有要测试的 DBMS 进行所有测试(我希望数据库层组件测试能够测试针对所有数据库的所有查询)。我会 运行 大多数验收套件针对一个 DBMS,而非常有限的一组针对其他 DBMS。