标签: dunit

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

我使用的是Delphi 7.

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

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

因为,在示例DUnit项目中,我们无法编写整套应用程序代码,因为在某些情况下可能需要创建一些其他形式.

所以,我怀疑这种情况如何编写测试用例,一般来说我们可以使用DUnit编写哪种类型的测试用例,重要的是如何编写?

delphi dunit delphi-7 parameterized-unit-test minimum-coded-unit

6
推荐指数
1
解决办法
2403
查看次数

单元测试Delphi数据模块

如果所有业务逻辑都存在于数据模块(TSQLDataSets和TDataSetProviders)中,您将如何重构代码以使应用程序更适合单元测试?

delphi unit-testing dunit datamodule

5
推荐指数
1
解决办法
1454
查看次数

5
推荐指数
1
解决办法
547
查看次数

在哪里可以找到将DUnit与Delphi 2007或更新版本一起使用的介绍?

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

有没有人知道用DUnit编写单元测试的任何好资源,可能还有一般的单元测试介绍?

我找到了Charlie Calvert资源,我一直在阅读,但我是一个有点动人的照片,我也希望看到任何与DUnit测试有关的视频(如果它们存在的话).任何帮助表示赞赏.

delphi unit-testing dunit

5
推荐指数
1
解决办法
379
查看次数

我可以从DUnit GUITestrunner中的代码调用ToolsAPI吗?

有没有办法在ToolSAPI单元中初始化全局变量BorlandIDEServices,以便可以从DUnit GUITestrunner代码中使用它?

procedure TGUITestRunner.FailureListViewClick(Sender: TObject);
var
  Project: IOTAProject;
begin
  if FailureListView.Selected <> nil then
  begin
    TestTree.Selected := TTreeNode(FailureListView.Selected.data);

    // call OTA
    Project := ToolsAPI.GetActiveProject;
    ShowMessage(Project.ProjectType);

  end;
end;
Run Code Online (Sandbox Code Playgroud)

在此示例中,Project变量将为nil,因为未初始化BorlandIDEServices变量.GUITestrunner在IDE中以调试模式运行.

delphi dunit opentools

5
推荐指数
1
解决办法
272
查看次数

(如何)我可以将FutureWindows与标准文件打开对话框一起使用吗?

我一直在尝试使用tomazy的FutureWindows基础设施(请参阅他在Delphi GUI测试和模态表单中的答案或https://github.com/tomazy/DelphiUtils上的工具的主页),但是想知道是否以及如何能够它可以与标准的Windows文件打开对话框一起使用吗?他们似乎没有继承TControl,FutureWindows的基础设施似乎假设(除非我误解了它).

我想做的基本上只是在OpenFileDialog中选择一个文件,该文件在我的测试中由命令以模态方式打开,但还没有弄清楚如何做到这一点.

delphi user-interface dunit

5
推荐指数
1
解决办法
485
查看次数

什么可能导致编译器不生成控制台输出

我有一个DUnit项目,如果我添加一些单位,将无法编译为控制台.
项目(dpr)由向导创建并CONSOLE_TESTRUNNER定义.

{$IFDEF CONSOLE_TESTRUNNER}
{$APPTYPE CONSOLE}
{$ENDIF}

begin
  Application.Initialize;
  if IsConsole then // <-- IsConsole is set to False.
    with TextTestRunner.RunRegisteredTests do
      Free
  else
    GUITestRunner.RunRegisteredTests;
end.
Run Code Online (Sandbox Code Playgroud)

使其失败的单位包括一些VCL组件,但没有对它们运行测试.
我甚至试图设置链接器选项,但它没有任何区别.
有人遇到过类似的问题吗?
只是为了澄清:这个项目是Delphi 2010中的Win32.

delphi dunit delphi-2010

5
推荐指数
1
解决办法
163
查看次数

德尔福模拟 - 是否可以在使用'WillReturn'模拟的函数中使用'VAR'或'OUT'排列?

我刚开始使用Delphi- Mocks和我的dunit测试,但它几乎没有文档.

问题是:

我正在尝试编写测试 'Test_LogonUser_CheckPwd_GOOD_PASSWORD'

但我不知道如何模拟函数 Fusers.CheckPwd(TEST_USERID,TEST_PASSWORD,ERROR_CODE);

通常我会使用: Fusers.Setup.WillReturn(True).When.CheckPwd(TEST_USERID,TEST_PASSWORD,ERROR_CODE);

但是'ERROR_CODE'是一个OUT值并且给出了编译错误

问题:

  1. 有没有办法让'WillReturn'与OUT或VAR参数一起工作?
  2. 有没有不同的方法来模拟'CheckPwd',以便它看到OUT或VAR参数?

这是我的代码:

/////  TDlUsers
interface
type
{$M+}
  IDlUsers = Interface(IInterface)
 ['{3611B437-888C-4919-B304-238A80DAD476}']
    function   VerifyPassword(UserId: integer; Pwd: string): Boolean;
    function   CheckPwd(UserId: integer; Pwd: string; out ErrorCode: Integer) : Boolean;
  end;
  function  Dl_Users : IDlUsers;
{$M-}
implementation
type
  TDlUsers = class(TDbIControl,IDlUsers)
  public
    function   VerifyPassword(UserId: integer; Pwd: string): Boolean;
    function   CheckPwd(UserId: integer; Pwd: string; out ErrorCode: Integer; out ErrorMsg:String) : Boolean;
  end;

  function  Dl_Users : IDlUsers;
  begin
    result :=  TDlUsers.create;
  end; …
Run Code Online (Sandbox Code Playgroud)

delphi dunit delphi-xe2 delphi-mocks

5
推荐指数
1
解决办法
658
查看次数

DUnit:'全球'SetUp和TearDown

在DUNIT,SetUp并且TearDown被前(和之后分别)称为每个测试方法被执行.
SetUp,我创建一个从文件加载数据的对象.这很慢,特别是如果我有很多测试.在执行所有测试之前
有没有办法调用SetUp一次(显然是相同的TearDown)?

delphi dunit delphi-xe

5
推荐指数
1
解决办法
943
查看次数

DUnit无法创建表单.目前没有MDI表单处于活动状态

嘿,我在Delphi XE3中的单元测试有问题我有一个项目,包含1个MDIForm和分配MDIChild表单然后问题是,当我在我的MDIChild表单上运行测试时,我收到此错误:

TestAllDataSrouces: EInvalidOperation
at  $0064346F
SetUp FAILED: Cannot create form. No MDI forms are currently active
Run Code Online (Sandbox Code Playgroud)

我的安装方法如下所示:

procedure TestTCustomerCard.SetUp;
begin
  FCustomerCard :=  TCustomerCard.Create(Application);
end;
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个错误?到目前为止我试过:

FCustomerCard :=  TCustomerCard.Create(Application.MainForm);

FCustomerCard :=  TCustomerCard.Create(nil);
Run Code Online (Sandbox Code Playgroud)

procedure TestTCustomerCard.SetUp;
var
  a : TForm;
begin
  a := TForm.Create(nil);
  a.FormStyle := fsMDIForm;
  FCustomerCard :=  TCustomerCard.Create(a);
end;
Run Code Online (Sandbox Code Playgroud)

我的测试是:

procedure TestTCustomerCard.TestAllDataSrouces;
var
  I: Integer;
begin
  for I := 0 to FCustomerCard.ComponentCount-1 do
  begin
    if (FCustomerCard.Components[i] is TcxLookupComboBox) then
    begin
      Check(TcxLookupComboBox(FCustomerCard.Components[i]).Properties.ListSource = nil,'Error no ListSource, Lookup: '+TcxLookupComboBox(FCustomerCard.Components[i]).Name+' Parent: '+TcxLookupComboBox(FCustomerCard.Components[i]).Parent.Name); …
Run Code Online (Sandbox Code Playgroud)

delphi mdi unit-testing dunit delphi-xe3

4
推荐指数
1
解决办法
1844
查看次数