I have the following .dpr
program TPWDDBManager;
{
Delphi DUnit Test Project
-------------------------
This project contains the DUnit test framework and the GUI/Console test runners.
Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options
to use the console test runner. Otherwise the GUI test runner will be used by
default.
}
{$IFDEF CONSOLE_TESTRUNNER}
{$APPTYPE CONSOLE}
{$ENDIF}
uses
DUnitTestRunner,
TestuTPWDDBManager in 'TestuTPWDDBManager.pas';
{$R *.RES}
begin
DUnitTestRunner.RunRegisteredTests;
end.
and the following unit:
unit TestuTPWDDBManager;
{
Delphi DUnit Test Case
----------------------
This unit contains a skeleton test case class generated by the Test Case Wizard.
Modify the generated code to correctly setup and call the methods from the unit
being tested.
}
interface
uses TestFramework;
type
// Test methods for class TPWDDBManager
TestTPWDDBManager = class(TTestCase)
strict private
public
procedure SetUp; override;
procedure TearDown; override;
published
procedure TestUpdateVersion;
procedure TestGetPWD;
procedure TestChangePWD;
procedure TestReset;
procedure TestIsReset;
end;
Idlg = interface(IInvokable)
['{E369D075-E3CA-4BB3-896C-0D623DE5798F}']
end;
implementation
uses SysUtils,Delphi.Mocks;
procedure TestTPWDDBManager.SetUp;
var
FMessageDLG : TMock<IDlg>;
begin
end;
procedure TestTPWDDBManager.TearDown;
begin
end;
procedure TestTPWDDBManager.TestGetPWD;
begin
// TODO: Validate method results
end;
procedure TestTPWDDBManager.TestIsReset;
begin
end;
procedure TestTPWDDBManager.TestChangePWD;
begin
end;
procedure TestTPWDDBManager.TestReset;
begin
end;
procedure TestTPWDDBManager.TestUpdateVersion;
begin
end;
initialization
// Register any test cases with the test runner
RegisterTest(TestTPWDDBManager.Suite);
end.
When I compile I get several warnings like:
[DCC Warning] W1029 Duplicate constructor 'TExpectation.CreateAfter' with identical parameters will be inacessible from C++ [DCC Warning] W1029 Duplicate constructor 'TExpectation.CreateAfterWhen' with identical parameters will be inacessible from C++ [DCC Warning] W1029 Duplicate constructor 'TExpectation.CreateAtLeastOnce' with identical parameters will be inacessible from C++
but if I remove the line FMessageDLG : TMock<IDlg>;
then the warning disappears
any idea of how to solve this ?
Delphi Mocks and C++ Compatibility Compiler flag in delphi projects are mutually incompatible. Just turn off the C++ Compatibility options in the Compiler settings. Remember that Delphi is used for many purposes. This warning serves a purpose in some use scenarios, but not in most delphi user's daily routines. You can disable the warning.
{$WARN DUPLICATE_CTOR_DTOR OFF}
Add to your PROJECT (.dpr) scope or unit scope, as needed to fix.
The warning means exactly what it says. If you're not interested in C++ compatibility, then simply disable the warning. Anything else would require changing the definition of TExpectation to give it constructors that differ by parameter list instead of just by name.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With