问题标签 [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 回答
688 浏览

unit-testing - 动态创建测试列表

我在 Delphi 中使用 DUnitX,但我被卡住了。如何动态创建测试列表?

例如,我有 sql 列表,需要像测试它们一样

对于一种方法,这很简单

执行

但是如果我需要测试列表,那么属性是不够的。 RepeatTest属性也不足,因为如果其中一项测试失败,则整个测试将停止,但我需要运行所有 sql

任何建议

编辑1

在 DUnit(没有 X)中,这可能是这样的

DUnitX 中的等价物是什么?

0 投票
1 回答
71 浏览

delphi - 如何在应用程序控制台的 DUnit 中确定哪些层次结构将被测试和未测试?

如何在应用程序控制台的 DUnit 中确定哪些层次结构将被测试和未测试?当我在 GUI 模式下工作时,我可以检查和取消选中层次结构。

0 投票
0 回答
69 浏览

jenkins - 为什么从“本地系统”帐户运行时单元测试会崩溃?

观察到的

我有一个在 Windows 从站上运行的 Jenkins 构建作业。从站已正确设置 MSBuild,并且正在运行 Windows Server 2012R2 Standard x64。

该构建作业正在为我的项目编译和运行单元测试。测试使用 DUnit 和 DelphiXE2 编译器。构建测试没有问题。但是当测试可执行文件启动时,Runtime error 216 at 00406E56就会发生。可执行文件不产生输出,并且不创建测试结果文件。测试可执行文件使用ConsoleRunner而不是 GUI。

当我以本地管理员或受限用户身份运行 exe 时,它​​按预期工作。

预期的

测试可执行文件通常会产生输出。它为每次测试运行打印一个点。无论如何,我希望exe开始运行。

自己的研究

  • 这里有一个问题似乎描述了相同的行为。

  • local system当运行可执行文件(例如通过PSExec )时,Windows Server 2012 和 2012R2 上会出现此问题。

  • 我用Dependency Walker查看了库依赖项,发现所有的库都可以被 exe 访问。PATH 和其他库依赖项的搜索路径都至少具有读取访问权限local system

  • 我确保 WOW64 正常工作。

嫌疑人

我不知道 DUnit 或 Delphi XE2 通常是否需要设置可见用户界面的权限。这是该local system帐户缺乏的东西之一。

0 投票
1 回答
522 浏览

unit-testing - Delphi 单元测试:为 CUT 编写一个简单的 spy

我正在寻找一种方法来轻松简洁地为 Delphi 下的DUnitX 测试框架编写一个间谍。

在过去,我使用了非常丑陋的方法来使用:

所有这些代码都用于检查是否调用了过程。太啰嗦了!

有没有办法编写一个可以帮助我减少代码的间谍?

0 投票
2 回答
411 浏览

delphi - 在 StopExpectingException 之后的 Delphi 7 Dunit 检查没有像我预期的那样工作

下面的代码工作正常, calc... 生成一个异常,将其注释掉或将 calc... 更改为不抛出异常并且测试失败。

我的问题是,在此之后我在此测试方法中进行的任何检查都不会执行。
所以

第一次 checkEquals 失败

通过 - 为什么?

我试图弄清楚我使用的是什么版本的 Dunit:

0 投票
0 回答
212 浏览

unit-testing - 模拟 FireDAC

我刚进入 Delphi 的单元测试领域——从来没有在 Delphi 中做过。在我开始数据库连接和查询之前,一切都很顺利。我正在使用TFDConnectionTFDQuery在数据访问类中。

我发现一篇文章指出应该使用“昂贵”调用接口。我查看了 FireDAC 的源代码,但没有找到任何合适的接口可以使用。并且实现 FireDAC 的大部分行为的观点并没有让我振作起来。

如何以正确的方式模拟数据库对象?

我开始认为将系统指向测试数据库应该容易得多。

0 投票
0 回答
179 浏览

delphi - DUnit 控制台应用程序未作为控制台应用程序运行

我有一个奇怪的问题。我有一个 DUnit(Delphi Berlin)应用程序,我需要作为 GUI(在我的开发机器上)和控制台应用程序(在构建机器上)运行。我刚刚复制了项目文件,重命名了它。我有通常的:

在一个应用程序中,我定义了 CONSOLE_TESTRUNNER 条件定义,而在另一个应用程序中我没有。

如果我编译控制台应用程序,它将作为控制台应用程序工作。但是,如果我 BUILD,那么它将作为 GUI 应用程序运行。(无论是在 GUI 中还是在命令行中)我什至尝试删除条件定义并将其显式设置为 {$APPTYPE CONSOLE},以从等式中删除条件定义,但随后应用程序只是抛出了一个 EInOutError I /O 错误 105。我猜它正在尝试写入输出但失败了。但是为什么呢?</p>

0 投票
1 回答
418 浏览

delphi - Delphi 在 DUnit 中模拟生命周期

我想测试最简单的情况:测试模拟策略对象。(看:策略模式)。

TMock<T>如果我在方法中创建 aTTestCase.setUp并将其存储在TTestCase实例属性中,那么我应该释放/NILtearDown方法中的模拟变量吗?

mock := NIL不编译:

[dcc32 错误] TestUnit2.pas(44):E2010 不兼容的类型:“Delphi.Mocks.TMock<T>”和“指针”。

运行没有任何错误,mock.free但我不确定我应该调用它。当进程退出其范围(在测试用例析构函数之后)时释放的模拟。

我应该打电话/设置什么吗?

编码:

单元2.pas:

测试单元2.pas:

0 投票
1 回答
186 浏览

dunit - 奇怪的单元版本错误 - DUnitX 取决于 DUnit 还是相反?

我正在使用 Delphi xe4 编译https://github.com/hprose/hprose-delphi/blob/master/Test/HproseTest.dpr

并得到以下错误,我花了几十分钟仍然无法弄清楚原因。

尝试删除所有“DUnitX * .dcu”并再次编译,但没有成功。

让我感到困惑的是,为什么DUnit的 TextTestRunner 单元(先出生)依赖于后来出生的DUnitX的单元?

有什么提示吗?谢谢。

这是我为使问题描述清晰而制作的屏幕截图: 在此处输入图像描述

0 投票
2 回答
502 浏览

delphi-2009 - DUnit 测试 - 无法创建表单。当前没有 MDI 表单处于活动状态

我从 DUnit 测试开始,对于新手的任何错误,我深表歉意。当我尝试运行简单测试并且编译器运行我的测试类的 SetUp 时,它停止返回消息“无法创建表单。当前没有 MDI 表单处于活动状态'。

经过一番研究,我找到了一些解释,但与我的问题无关。

问题似乎是当我调用我的子源类的 Create 方法时 - 原点是指我拥有所有要测试的过程和函数的类,让我们通过 TfrmFoo 调用它。我的测试类应该是TestTfrmFoo。TFrmFoo 有一个带有一些基本代码的父级,即 TfrmParentFoo。

我这样调用 Create 方法:

之后调用TfrmFoo类的Create方法,出现如下错误:' Cannot create form. 当前没有 MDI 表单处于活动状态'。

我已经尝试覆盖我的子类 TfrmFoo 的创建,将 FormStyle 属性设置为“fsNormal”而不是“fsMDIChild”,什么也没有。我还发现了一些关于使用 sleep(500) 的想法,但问题仍然存在。

编辑:贡献 后Remy Lebeau,我更改了SetUp测试以在调用子窗体之前创建父窗体,并将其用作创建子窗体的参数。相同的错误信息。我是不是改错了什么?

还有其他提示吗?谢谢!