Using DUnitX with DelphiSpec
paustr opened this issue · 1 comments
paustr commented
We want to use the newest version of DUnitX with DelphiSpec library.
DUnitX.Extensibility.ITestFixture.AddTest method requires now new ARttiMethod parameter of type TRttiMethod and problem occurs in DelphiSpec.DUnitX.TDelphiSpecFixtureProvider.Execute method.
What should be passed as ARttiMethod parameter?
vincentparrett commented
procedure TDelphiSpecFixtureProvider.Execute(const Context: IFixtureProviderContext);
var
Feature: TFeature;
ScenarioOutline: TScenarioOutline;
RootFixture: ITestFixture;
FeatureFixture: ITestFixture;
OutlineFixture: ITestFixture;
ScenarioFixture: ITestFixture;
rttiCtx : TRttiContext;
rttiType : TRttiType;
rttiMethod : TRttiMethod;
procedure BuildTests(const ParentFixture: ITestFixture; const Scenarios: TScenarioList);
var
FixtureInstance: TDUnitXScenario;
TestMethod: TTestMethod;
Method: TMethod;
Scenario: TScenario;
begin
for Scenario in Scenarios do
begin
FixtureInstance := TDUnitXScenario.Create(Scenario);
ScenarioFixture := parentFixture.AddChildFixture(FixtureInstance, Scenario.Name, '');
Method.Data := FixtureInstance;
Method.Code := @TDUnitXScenario.Execute;
TestMethod := TTestMethod(Method);
ScenarioFixture.AddTest('', TestMethod, Scenario.Name, '',rttiMethod );
end;
end;
begin
if (_Features = nil) or (_Features.Count < 1) then
Exit;
rttiCtx := TRttiContext.Create;
rttiType := rttiCtx.GetType(TDUnitXScenario);
rttiMethod := rttiType.GetMethod('Execute');
RootFixture := Context.CreateFixture(TObject, _RootName, '');
for Feature in _Features do
begin
FeatureFixture := RootFixture.AddChildFixture(TObject, Feature.Name, '');
BuildTests(FeatureFixture, Feature.Scenarios);
for ScenarioOutline in Feature.ScenarioOutlines do
begin
OutlineFixture := FeatureFixture.AddChildFixture(TObject, ScenarioOutline.Name, '');
BuildTests(OutlineFixture, ScenarioOutline.Scenarios);
end;
end;
end;
That got me past that part, however it fails on RegisterFeaturesWithDUnitX('DunitXDemo',Features);
with
[dcc32 Error] DelphiSpecDUnitXDemo.dpr(37): E2010 Incompatible types: 'TFeatureList' and 'System.Generics.Collections.TObjectList<DelphiSpec.Scenario.TFeature>'
I can't help with that.