我有原始的测试框架(sort-of)在我的情况下运行得很好。
它基本上是一个特殊的测试单元,在项目的主要形式中是$ INCLUDEd。
例如,假设我的主要表单如下所示:
unit start;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ...;
type
{$ifdef CodeTest}
TFileOperation = (fpDelete, fpModify, fpRename);
{$endif}
TMainForm = class(TdxRibbonForm)
dxRibbon: TdxRibbon;
dxBarManagerBar: TdxBarManager;
About: TdxBarButton;
// ...
procedure FormCreate(Sender: TObject);
procedure AboutClick(Sender: TObject);
// ...
private
{ Private declarations }
SomePrivateVar : String;
// ...
{$ifdef CodeTest}
StartTestTimer : TTimer;
{$endif}
{$ifdef CodeTest}
// Code Test Routines
procedure CodeTestsBtnClick(Sender: TObject);
// Start code testing after some delay to properly initialize app
procedure StartTestingTimer(Sender: TObject);
function CodeTests() : Boolean;
procedure CodeSingleTest(TheButton : TdxBarButton; strTestData : String = '');
// ...
{$endif} {.$ifdef CodeTest}
function SomePrivateFunction();
public
{ Public declarations }
Public_Var_1 : Integer;
Public_Var_2 : Integer;
function SomeFunction();
end;
var
MainForm : TMainForm;
implementation
{$R *.dfm}
{$ifdef CodeTest}
{$include _CodeTests.pas}
{$endif}
// ----------------------------------------------------------------------- //
procedure TMainForm.FormCreate(Sender: TObject);
begin
// ...
end;
// ----------------------------------------------------------------------- //
...
代码测试单元如下所示:
function CodeTest();
begin
// Hide Folders Left Panel
CodeSingleTestChecked(ShowFolders, ''{strTestData}, False{NewValue});
Assert( IsOK( (NxSplitterLeft.Visible = False) And
(NxPanelFolders.Visible = False) And
(NxPanelFiles.PanelBorders = [boBottom, boTop, boRight, boLeft]) And
(NxHeaderPanel.Margins.Left = 1)
));
// etc...
end;
唯一真正的限制是我必须将代码测试单元包含在主窗体中(即。{$include _CodeTests.pas}
),除此之外,我有我需要的一切:功能测试,压力,结果和错误检查等...
我唯一的问题是;我现在需要聘请某人来完成这些测试,但我真的不希望暴露我的代码(至少不是在开头),所以我想知道是否有办法给新人代码测试单元但不是项目代码,只有函数头,即
procedure TMainForm.FormCreate(Sender: TObject);
procedure TMainForm.NewBtnClick(Sender: TObject);
procedure TMainForm.HelpClick(Sender: TObject);
...
这样他/她就可以继续进行代码测试,同时仍能保护我的代码,至少在我信任这个人之前。
我不寻求法律建议,我对技术观点感兴趣,即。如果可以保护我的代码而不会让那个人的工作变得更难。
我考虑过使用构建软件(我拥有并主动使用FinalBuilder),构建服务器等......但最终决定 if 我可以inject
中的测试代码EXE 没有必须重新编译,这对我来说是个想法。
所以我的问题是:是否可以在EXE中注入测试代码而无需重新编译?
PS。是的,我知道关于DUnit ,但考虑到项目规模和范围时,现在无法立即切换测试框架 。时间限制