我使用的是Delphi 7.
我是DUnit的新手,我的疑问是我可以使用DUnit编写什么样的测试用例以及如何(这对我来说非常重要).
是否可以为特定的按钮点击事件编写测试用例?因为在那种情况下可能会使用大量代码,其中使用各自的数据库相关过程或函数调用更多单元.在这种情况下,编写测试用例的最佳方法是什么?(如果可能的话,一个例子或推荐对我来说将是一个很大的帮助).
因为,在示例DUnit项目中,我们无法编写整套应用程序代码,因为在某些情况下可能需要创建一些其他形式.
所以,我怀疑这种情况如何编写测试用例,一般来说我们可以使用DUnit编写哪种类型的测试用例,重要的是如何编写?
delphi dunit delphi-7 parameterized-unit-test minimum-coded-unit
如果所有业务逻辑都存在于数据模块(TSQLDataSets和TDataSetProviders)中,您将如何重构代码以使应用程序更适合单元测试?
我是新手使用和编写单元测试,但我已经确信他们可以帮助我编写更好的代码并最终节省我的时间.我知道DUnit已经很好地集成到Delphi 2006和更新版本中.
有没有人知道用DUnit编写单元测试的任何好资源,可能还有一般的单元测试介绍?
我找到了Charlie Calvert的资源,我一直在阅读,但我是一个有点动人的照片,我也希望看到任何与DUnit测试有关的视频(如果它们存在的话).任何帮助表示赞赏.
有没有办法在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中以调试模式运行.
我一直在尝试使用tomazy的FutureWindows基础设施(请参阅他在Delphi GUI测试和模态表单中的答案或https://github.com/tomazy/DelphiUtils上的工具的主页),但是想知道是否以及如何能够它可以与标准的Windows文件打开对话框一起使用吗?他们似乎没有继承TControl,FutureWindows的基础设施似乎假设(除非我误解了它).
我想做的基本上只是在OpenFileDialog中选择一个文件,该文件在我的测试中由命令以模态方式打开,但还没有弄清楚如何做到这一点.
我有一个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- 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值并且给出了编译错误
问题:
这是我的代码:
///// 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) 在DUNIT,SetUp并且TearDown被前(和之后分别)称为每个测试方法被执行.
在SetUp,我创建一个从文件加载数据的对象.这很慢,特别是如果我有很多测试.在执行所有测试之前
有没有办法调用SetUp一次(显然是相同的TearDown)?
嘿,我在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 ×10
dunit ×10
unit-testing ×4
datamodule ×1
delphi-2010 ×1
delphi-7 ×1
delphi-mocks ×1
delphi-xe ×1
delphi-xe2 ×1
delphi-xe3 ×1
mdi ×1
opentools ×1
singleton ×1
tdd ×1