问题标签 [dunit]

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 投票
2 回答
1638 浏览

delphi - 使用 FinalBuilder 和 AQTime 获取 DUnit 测试覆盖率统计信息

我们有一个大型 Delphi 项目(150 万行代码),我们正在转向使用敏捷流程。

我们已经有了一个持续集成环境 (FinalBuilder),我已经对其进行了更新,在发给我们开发团队每个人的电子邮件中包含了单元测试 (dUnit) 和代码指标 (CodeHealer)。我们的单元测试覆盖率不是很好,所以我现在正尝试将 AQtime 加入到每个构建中的一些测试覆盖率结果中。

我正在使用“执行程序”任务来运行单元测试可执行文件,记录结果并随后解析文件。我打算使用“运行脚本”任务来运行 AQtime(通过 COM)并将结果导出到 XML,以便我可以解析这些结果。

我遇到的问题是 AQtime 运行单元测试可执行文件,我失去了直接监控单元测试可执行文件的能力。我想让 FinalBuilder 解析这两个任务的结果。有人知道从 AQtime 调用 dUnit 结果时如何访问它吗?

0 投票
3 回答
2748 浏览

delphi - DUnit:如何运行测试?

如何从 IDE 运行TestCase

我创建了一个新项目,具有一个简单的表单:

现在我将添加一个测试用例来检查 pushButton1是否可以做到:

鉴于我所做的(GUI 项目中的测试代码),我现在如何触发测试运行?如果我推动F9,那么表格就会出现:

替代文字

理想情况下,IDE 中有一个按钮或菜单选项,显示Run DUnit Tests

替代文字

我生活在一个梦幻世界吗?一个幻想的土地,住在棒棒糖巷的橡皮糖房子里?

0 投票
5 回答
269 浏览

delphi - 为什么当我有一个新单位时“使用单位”会消失?

我有一个使用 DUnit 框架的应用程序的单元测试项目。这个项目有一个被 a 包围的单元,$IFDEF用于在 xml 文件中输出测试结果,而不是 gui 或只是命令行。XML_OUTPUT 定义通过切换构建配置启用。

这完美地工作。当我从 IDE 向该项目添加一个新单元时,问题就开始了(一个带有“文件>新建>单元”的新单元)。

测试项目现在是:

如您所见,测试 XML_OUTPUT 消失了……每次我添加一个单元时,Delphi IDE 都会删除该测试。

你知道为什么以及如何避免它吗?

0 投票
3 回答
665 浏览

unit-testing - 在使用模拟对象时,如何防止我的单元测试需要有关实现内部的知识?

我仍处于关于单元测试的学习阶段,特别是关于模拟(我正在使用PascalMockDUnit框架)。我现在偶然发现的一件事是,我找不到将测试类/接口的实现细节硬编码到我的单元测试中的方法,而且感觉不对……

例如:我想测试一个类,它实现了一个非常简单的接口,用于读取和写入应用程序设置(基本上是名称/值对)。呈现给消费者的界面完全不知道值的实际存储位置和方式(例如注册表、INI 文件、XML、数据库等)。自然地,访问层是由另一个不同的类实现的,该类在构造时被注入到测试类中。我为此访问层创建了一个模拟对象,现在我能够完全测试接口实现类,而无需实际读取或写入任何注册表/INI 文件/任何内容。

但是,为了确保模拟对象在被测试类访问时的行为与真实对象完全一样,我的单元测试必须通过非常明确地定义预期的方法调用和被测类预期的返回值来设置模拟对象。这意味着如果我必须更改访问层的接口或测试类使用该层的方式,我还必须更改内部使用该接口的类的单元测试,即使接口我实际上正在测试的课程根本没有改变。这是我在使用模拟时必须忍受的事情,还是有更好的方法来设计可以避免这种情况的类依赖关系?

0 投票
2 回答
421 浏览

delphi - 在哪里可以找到在 Delphi 2007 或更高版本中使用 DUnit 的介绍?

我是使用和编写单元测试的新手,但我已经确信它们可以帮助我编写更好的代码并最终节省我的时间。我了解DUnit已很好地集成到 Delphi 2006 和更新版本中。

有谁知道用 DUnit 编写单元测试的任何好的资源,以及一般的单元测试介绍?

从 Charlie Calvert那里找到了我一直在阅读的资源,但我有点像电影人,而且我还希望看到与 DUnit 测试相关的任何视频(如果存在的话)。任何帮助表示赞赏。

0 投票
1 回答
634 浏览

delphi - 如何以编程方式按名称禁用 DUnit 测试?

对于集成测试,我创建了一个 DUnit 测试套件,它为第三方组件(消息代理)的每个版本运行一次。不幸的是,由于某些版本的测试组件中的已知错误,某些测试总是失败。

这意味着测试套件永远不会 100% 完成。但是,对于自动化测试,需要 100% 的成功分数。DUnit 没有提供现成的方法来按名称禁用测试套件中的测试。

0 投票
2 回答
1076 浏览

delphi - exe中缺少Delphi 2007版本信息

我有一个 Delphi 2007 项目,我正在尝试设置 Project->Options->'Version Info'。我将值输入表单并保存项目。但是,当我构建时,生成的 exe 不包含我输入的版本信息。事实上,它只包含文件版本、语言和产品版本——没有其他值,如内部名称、产品名称等......

我注意到这些值没有保存到 .dproj 文件中。所以我尝试将它们手动输入到所述文件的 xml 中,保存并构建。同样,exe 的版本信息不完整。

通过版本信息(在 Windows 中),我的意思是当您右键单击 exe 并选择属性并单击版本选项卡时看到的内容。

编辑: 我可能还应该提到这是一个使用 DUnit 的测试项目。

有人有想法么?

0 投票
2 回答
2604 浏览

delphi - 哈德逊的 dunit 测试结果消息

我使用Hudson作为 Delphi 2010 项目的 CI 服务器。XMLTestRunner.pas 单元将 DUnit 测试结果写入一个 xml 文件,hudson xUnit 插件使用该文件来报告测试结果。xUnit 插件显示失败但没有消息:

在“发布测试工具结果报告”的 hudson 项目配置中,我选择“NUnit-Version N/A (default)”作为测试工具,因为列表中没有 dunit 选项并且 xml 文件看起来类似于 nunit 格式:

在 hudson 配置中还有一个“自定义工具”选项,我必须在其中指定一个“自定义样式表”,但我不知道如何编写这样的样式表(是否有任何文档?)。

在我的带有 boost 测试的 C++ 项目上,所有消息都很好地报告了故障。

0 投票
5 回答
3978 浏览

delphi - CheckException 只接受 0 参数的方法;如何测试其他方法是否引发异常?

我想知道在 dunit 中测试异常的最佳实践是什么。我对 Delphi 中的方法指针不是很熟悉。是否有可能将参数绑定到方法指针,以便可以在没有参数的情况下调用它。目前我总是写一个额外的方法来手动执行这个“绑定”。如果 SUT 有很多投掷方法,这会很烦人。

0 投票
7 回答
1811 浏览

delphi - How to access fields of a TTestCase in a TTestSetup class

I am creating unit tests with DUnit. I have a class that takes quite a long time to initialize.

I derive a class TMyTestSetup from TTestSetup and override its Setup method. This SetUp method is only called once for all the tests in my TTestCase. I put the Initialization process in the TMyTestSetup.SetUp routine to increase performance.

My problem is how can I access the object I want to initialize, which is a field of my TMyTest in the TestSetup class? Is the only way to do it declaring it globally?

untested short example: