问题标签 [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 投票
1 回答
341 浏览

delphi - 如何处理纠结的使用依赖关系以便开始单元测试?

我有一个凌乱的 Delphi 7 遗留系统需要维护和开发。我已经在阅读“有效地使用遗留代码”,我非常喜欢这本书。

为了开始遵循书中的建议,我创建了一个测试项目并尝试编写一个测试。为此,我需要在测试项目中添加一些单元,但问题在于:被测系统具有可怕的使用依赖项。一个单元使用其他单元,该单元使用其他单元,依此类推。似乎大多数单元直接或间接使用一个特定单元,而该单元在其使用子句中又具有 170 个依赖项。也有间接的循环依赖。

目前我正在尝试将所有遗留系统的单元添加到测试项目中,但我遇到了各种各样的问题,比如“单元 xxx 是用不同版本的 xxx 编译的”等等。

所以我想知道我是否做错了什么。我以前使用过单元测试,但在我自己的项目中,它更小,结构和模块化更好。在这种情况下我有什么选择?我错过了什么吗?

0 投票
3 回答
1889 浏览

delphi - Free Pascal 和 Delphi 的单源单元测试

有没有办法编写单元测试,以便可以使用 Delphi 和 Free Pascal 编译和运行它们?

Delphi 和 Free Pascal 有不同的单元测试框架,这会导致针对这两种编译器的开发人员(例如,库和框架开发人员)的重复工作。

所以也许有一种方法,使用 DUnit 或 FPCUnit 框架并调整测试用例源代码(或框架本身),以便它也可以与其他编译器一起使用。

所以本质上问题是:

  • 哪个框架(DUnit 或 FPCUnit)可以用两种编译器(Delphi 和 Free Pascal)编译,并且尽可能少地修改?

或者

  • 是否有与 Delphi 和 FPC 一起使用的第三个框架(感谢 Arnaud 提到 TSynTest)?
0 投票
1 回答
1320 浏览

c++ - DUnit 与 C++ Builder 的替代品是什么?

我有一些使用C++ builder XE开发的项目。
我想添加一些单元测试,但是安装的DUnit框架对 Delphi 来说很好,但是与 C++ builder 的集成不是很好(而且非常有限)。

我可以轻松使用其他哪些 xUnit 框架?

0 投票
2 回答
839 浏览

delphi - Delphi 7、FastMM 和 DUnit GUITesting 错误的内存泄漏测试失败

我在 FastMM 误报方面遇到了一些问题。这一次,泄漏是在案例测试表格中。它与我在这里描述的非常相似。

我有一个表单和一些普通的旧 VCL 控件。第一次测试运行显示实际上不存在的泄漏。第二次运行没有泄漏。我搜索了所有 DUnit 源代码,但找不到修复它的原因。有人可以帮助我吗?

我不能运行两次测试,因为: 1. 它将在持续集成中运行;2.有些测试确实需要一些时间,加倍它是不明智的。

我检查了 DUnit GUI 中的最后 3 个选项: - 在关机时报告内存泄漏类型 - 如果内存泄漏,则测试用例失败 - 在 SetUp/TearDown 中忽略内存泄漏

以下是示例代码:

0 投票
4 回答
1354 浏览

delphi - Delphi XE下的DUnit在哪里?

看起来 DUNIT 已经集成在 Delphi XE 下。但我找不到它。我的问题是:

  1. 我怎样才能访问它?我必须手动安装吗?我不记得 Delphi 设置询问我是否要安装 DUnit。
  2. 如果我必须手动安装它,最好从 sourceforge.net 下载最新版本,还是 Embarcadero 提供的版本(在 Delphi 的 CD 上)(如果存在)与 Delphi 更好地集成?

更新:
我购买了没有 CD 的 Delphi(可下载版本)。也许它比 CD 上提供的版本小,所以不包括 DUnit 等工具?

0 投票
2 回答
2631 浏览

delphi - 我们可以使用 DUnit 编写什么样的测试用例?

我正在使用德尔福 7。

我是 DUnit 的新手,我怀疑我可以使用 DUnit 编写什么样的测试用例以及如何编写(这对我来说非常重要)。

是否可以为特定的按钮单击事件编写测试用例?因为在那种情况下,可能会使用大量代码,其中使用各自的数据库相关过程或函数调用更多单元。在这种情况下,编写测试用例的最佳方法是什么?如何编写?(如果可能的话,一个例子或参考将对我有很大的帮助)。

因为,在示例 DUnit 项目中,我们无法编写完整的应用程序代码集,因为在某些情况下可能需要创建其他表单。

所以,我的疑问是在这种情况下如何编写测试用例,通常我们可以使用 DUnit 编写什么类型的测试用例,重要的是如何编写?

0 投票
2 回答
835 浏览

delphi - 在delphi中访问其他.exe数据的最简单方法是什么?

我尝试使用 Delphi 2010 附带的 DUnit 对 1000 万个 LOC 项目实施一些基本的自动化测试,这些项目不遵循良好的 OO 实践(例如:将业务逻辑隔离到类/单元中)。我不能做正常的单元由于业务逻辑的每个部分都分布在数十个相互依赖的单元中,因此在该项目上进行测试,但是这些单元“组”以某些“主要业务逻辑屏幕”为中心(例如:所有与发票逻辑相关的单元都以主发票屏幕),并且由于这些屏幕是类,我可以进行“主要业务逻辑屏幕类测试”而不是单元测试,但是这些“主屏幕”仍然需要在流程启动期间创建的很多东西。

所以我需要两者:

  • 能够运行坏项目的启动内​​容
  • 能够访问其对象

坏项目已经有一些导出的函数返回指针,我可以转换它们来访问它的对象,但我无法以任何一种方式调用它们:

如果我将坏项目创建为测试进程的子进程,启动代码运行良好,但如果没有复杂的 IPC 方法或对坏项目的结构进行实质性更改,我找不到调用导出函数的方法。

如果我像 LoadLibrary 函数一样将坏项目的 .exe 作为 dll 加载,调用坏项目导出的任何函数都会导致访问冲突和/或段错误,即使是这个简单的过程:

我怎样才能做到这两点?

0 投票
4 回答
4799 浏览

delphi - 使用 FreeOnTerminate = True 对 TThread 进行 Delphi 单元测试

当 FreeOnTerminate = True 时,为 TThread 后代编写 Delphi DUnit 测试的最佳方法是什么?TThread 后代返回一个我需要测试的引用,但我不知道如何等待线程在测试中完成......

任何想法都会受到欢迎。

德尔福 2010。

0 投票
0 回答
152 浏览

delphi - 我可以在 DUnit 测试中使用实现 ToolsAPI 的 IOTAEditPosition 的真实对象吗?

我正在编写一组向导来增强 IDE 中的源代码编辑,并且通过IOTAEditPosition我从BorlandIDEServices.

我怎样才能对我的方法进行自动化测试,以便我可以断言文本操作是正确的?IOTAEditPosition不能被存根或模拟,因为我想模拟生产代码的相同环境(真实的IOTAEditPosition自动处理缩进,换行符,它有几种方法,比如检查一个字符是标识符还是单词分隔符,文本搜索机制等等,它确实做了很多特定于 IDE 编辑器的事情)。

在这种情况下,我不关心像Unit vs Integration test这样的清教主义。如果你愿意,可以称之为集成测试,事实是我的代码完全依赖于它的行为,IOTAEditPosition我需要一起测试它们。

只是为了让它更清楚一点。在我看来,理想的断言应该是这样的:

由于实际的底层文本操作是由 IOTAEditPosition 完成的,因此我需要它的实现,其行为与我在生产代码中得到的完全一样。

0 投票
3 回答
841 浏览

delphi - Delphi Mocks – 是否可以在使用“WillReturn”模拟的函数中使用“VAR”或“OUT”排列?