2

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

编辑

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

4

2 回答 2

4

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

于 2008-10-29T19:14:12.037 回答
2

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

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

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

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

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

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

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

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

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

于 2011-12-02T15:05:28.280 回答