@@ -68,7 +68,7 @@ TDUnitXTestRunner = class(TWeakReferencedObject, ITestRunner)
6868 FLogMessagesEx : TLogMessageArray;
6969
7070 FFailsOnNoAsserts : boolean;
71-
71+ FCurrentTestName : string;
7272 protected
7373 procedure CountAndFilterTests (const fixtureList: ITestFixtureList; var count, active: Cardinal);
7474 // Logger calls - sequence ordered
@@ -142,6 +142,7 @@ TDUnitXTestRunner = class(TWeakReferencedObject, ITestRunner)
142142 // redirects WriteLn to our loggers.
143143 procedure WriteLn (const msg: string); overload;
144144 procedure WriteLn ; overload;
145+ function CurrentTestName : string;
145146
146147 // internals
147148 procedure RTTIDiscoverFixtureClasses ;
@@ -162,6 +163,7 @@ TDUnitXTestRunner = class(TWeakReferencedObject, ITestRunner)
162163 constructor Create(const AListeners: array of ITestLogger); overload;
163164 destructor Destroy; override;
164165 class function GetActiveRunner : ITestRunner;
166+ class function GetCurrentTestName : string;
165167 end ;
166168
167169implementation
@@ -378,6 +380,11 @@ function TDUnitXTestRunner.CreateFixture(const AInstance : TObject;const AFixtur
378380end ;
379381
380382
383+ function TDUnitXTestRunner.CurrentTestName : string;
384+ begin
385+ result := FCurrentTestName;
386+ end ;
387+
381388destructor TDUnitXTestRunner.Destroy;
382389var
383390 tId: TThreadID;
@@ -632,6 +639,15 @@ class function TDUnitXTestRunner.GetActiveRunner: ITestRunner;
632639 result := ref.Data;
633640end ;
634641
642+ class function TDUnitXTestRunner.GetCurrentTestName : string;
643+ var
644+ runner : ITestRunner;
645+ begin
646+ runner := GetActiveRunner;
647+ if runner <> nil then
648+ result := runner.CurrentTestName;
649+ end ;
650+
635651function TDUnitXTestRunner.GetFailsOnNoAsserts : boolean;
636652begin
637653 Result := FFailsOnNoAsserts;
@@ -745,27 +761,32 @@ function TDUnitXTestRunner.ExecuteTest(const context: ITestExecuteContext; const
745761 begin
746762 FLogMessages.Clear;
747763 SetLength(FLogMessagesEx, 0 );
748- Self.Loggers_ExecuteTest(threadId, test as ITestInfo);
749- assertBeforeCount := 0 ;// to shut the compiler up;
750- if FFailsOnNoAsserts then
751- assertBeforeCount := TDUnitX.GetAssertCount(threadId);
752- memoryAllocationProvider.PreTest;
764+ FCurrentTestName := test.Name ;
753765 try
754- testExecute.Execute(context);
755- finally
756- memoryAllocationProvider.PostTest;
757- end ;
766+ Self.Loggers_ExecuteTest(threadId, test as ITestInfo);
767+ assertBeforeCount := 0 ;// to shut the compiler up;
768+ if FFailsOnNoAsserts then
769+ assertBeforeCount := TDUnitX.GetAssertCount(threadId);
770+ memoryAllocationProvider.PreTest;
771+ try
772+ testExecute.Execute(context);
773+ finally
774+ memoryAllocationProvider.PostTest;
775+ end ;
758776
759- if FFailsOnNoAsserts then
760- begin
761- assertAfterCount := TDUnitX.GetAssertCount(threadId);
762- if (assertBeforeCount = assertAfterCount) then
763- raise ENoAssertionsMade.Create(SNoAssertions);
764- end ;
777+ if FFailsOnNoAsserts then
778+ begin
779+ assertAfterCount := TDUnitX.GetAssertCount(threadId);
780+ if (assertBeforeCount = assertAfterCount) then
781+ raise ENoAssertionsMade.Create(SNoAssertions);
782+ end ;
765783
766- Result := ExecuteSuccessfulResult(context, threadId, test, FLogMessages.Text, FLogMessagesEx);
767- FLogMessages.Clear;
768- SetLength(FLogMessagesEx, 0 );
784+ Result := ExecuteSuccessfulResult(context, threadId, test, FLogMessages.Text, FLogMessagesEx);
785+ FLogMessages.Clear;
786+ SetLength(FLogMessagesEx, 0 );
787+ finally
788+ FCurrentTestName := ' ' ;
789+ end ;
769790 end
770791 else
771792 begin
0 commit comments