Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Midas/DataSnap项目中的DUnit测试_Delphi_Datasnap_Dunit_Midas Server - Fatal编程技术网

Delphi Midas/DataSnap项目中的DUnit测试

Delphi Midas/DataSnap项目中的DUnit测试,delphi,datasnap,dunit,midas-server,Delphi,Datasnap,Dunit,Midas Server,如何在Delphi2006的Midas/DataSnap项目中设置DUnit测试 编辑 如何在TRemoteDataModule中设置Dunit测试 Delphi 2006中的项目向导不适用于TRemoteDataModule,这个问题没有完全意义。单元测试在单独的项目中执行,而不是在DataSnap服务器中执行。通常,连接到数据库的测试是集成测试,而不是单元测试。你到底想测试什么?如果它是(比如)TRemoteDataModule中的实用方法,那么您应该将它们提取到一个单独的类中作为类方法,并

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

编辑

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

对不起,上面的答案很简洁,每当我在编辑帖子时点击return时,iPad就会发布帖子

dUnit设计用于执行单元测试,而您尝试做的不是单元测试

在以下情况下,测试不是单元测试:

  • 它与数据库通信
  • 它通过网络进行通信
  • 它涉及到文件系统
  • 它不能与任何其他单元测试同时运行
  • 您必须对您的环境执行特殊操作(例如编辑配置文件)才能运行它
  • 它不能孤立地运行
如果遵循可靠的原则(特别是单一责任原则),那么使用dUnit测试类(不测试Midas/DataSnap相关逻辑)应该相当简单。实际上,您不需要测试Midas/DataSnap逻辑

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

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

你可以试试,但我不确定乔迪·道金斯是否还在维护它


我在一些项目中直接使用了基本脚本语言,在另一个项目中使用了.NET汇编来驱动使用NUnit和C#的Delphi应用程序。虽然不是完美的,但NUnit/C#解决方案比我在执行功能/行为测试Delphi应用程序时看到的任何解决方案都要优雅。不过安装起来确实花了一些功夫。

我不同意。IMHO表示,必须使用真实的客户机/服务器通信、多个客户机和多个处理对客户机/服务器应用程序进行单元测试。它有时被称为“压力测试”,而且总是值得的。…@A.Bouchez,我在哪里说过你不应该做集成测试?我没有;您绝对应该做集成测试。但是单元测试不同于集成测试@Craig同意,但是DUnit可以用来执行集成测试,我还没有看到专门为自动化集成设计的Delphi工具tests@mjn,我们使用TestComplete来完成这个。我同意Craig的观点。如果测试与数据库、文件系统、网络或应用程序无法控制的任何服务进行通信,那么它就不是单元测试。