【问题标题】:DUnit Testing in a Midas/DataSnap projectMidas/DataSnap 项目中的 DUnit 测试
【发布时间】:2008-10-29 18:54:31
【问题描述】:

如何在 Delphi 2006 的 Midas/DataSnap 项目中设置 DUnit 测试

编辑

如何将 Dunit 测试设置到 TRemoteDataModule Delphi 2006 中的项目向导不适用于 TRemoteDataModule

【问题讨论】:

    标签: delphi datasnap dunit midas-server


    【解决方案1】:

    这个问题并不完全有意义。单元测试在一个单独的项目中执行,而不是在您的 DataSnap 服务器中。通常,连接到数据库的测试是集成测试而不是单元测试。它到底是什么,正是您想要测试的?如果它是 TRemoteDataModule 中的实用程序方法,您应该将它们作为类方法提取到一个单独的类中,并在那里进行测试。您不必实例化应用程序服务器来执行单元测试。

    【讨论】:

    • 我不同意。恕我直言,必须对具有真实客户端/服务器通信、多个客户端和多处理的客户端/服务器应用程序进行单元测试。它有时被称为“压力测试”,它总是值得的......
    • @A.Bouchez,我在哪里说过你不应该进行集成测试?我没有;你绝对应该做集成测试。但是单元测试不同于集成测试!
    • @Craig 同意,但是 DUnit 可用于执行集成测试,我还没有看到专门为自动化集成测试设计的 Delphi 工具
    • @mjn,我们为此使用 TestComplete。
    • 我同意克雷格的观点。如果测试与数据库、文件系统、网络或应用程序无法控制的任何服务进行通信,则它不是单元测试。
    【解决方案2】:

    抱歉上面的简洁答案,只要我在编辑帖子时点击返回,iPad就会发布。

    dUnit 旨在执行单元测试,而您要做的不是单元测试。

    如果满足以下条件,则测试不是单元测试:

    • 它与数据库对话
    • 它通过网络进行通信
    • 涉及文件系统
    • 它不能与您的任何其他单元测试同时运行
    • 您必须对您的环境做一些特殊的事情(例如编辑配置文件)才能运行它。
    • 它不能单独运行

    如果您遵循 SOLID 原则(尤其是单一职责原则),使用 dUnit 测试您的类(无需测试 Midas/DataSnap 相关逻辑)应该相当简单。实际上,您不需要测试 Midas/DataSnap 逻辑。

    但是有一些方法可以对 Delphi 应用程序执行集成和行为测试。

    就我个人而言,我不会使用 TestComplete,因为它不能很好地与任何类型的 CI 服务器集成,并且测试以专有的二进制格式存储(这使得在任何源代码控制系统中合并差异或维护更改都存在问题)。

    您可以尝试 dSpec,但我不确定 Jody Dawkins 是否会继续维护它。

    我在一些项目中直接使用了AutoIt BASIC 脚本语言,并且还使用它的.NET 程序集来驱动使用NUnit 和C# 的Delphi 应用程序。虽然不完美,但 NUnit / C# 解决方案比我在执行功能 / 行为测试 Delphi 应用程序时看到的任何东西都要优雅。不过,设置它确实需要一些努力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2015-03-13
      相关资源
      最近更新 更多