2016-08-29 2 views
1

Ich habe das Beispiel für DUnitX für Rad Studio Berlin in C++ erstellt. Der Code ist eine Kopie von: http://docwiki.embarcadero.com/RADStudio/Seattle/en/DUnitX_OverviewSetup wird in DUnitX in Rad Studio nicht aufgerufen

Der Header ist:

class __declspec(delphirtti) TestCalc : public TObject 
{ 
    public: 
    virtual void __fastcall SetUp(); 
    virtual void __fastcall TearDown(); 

    __published: 
    void __fastcall TestAdd(); 
    void __fastcall TestSub(); 
    }; 

TestAdd und TestSub genannt werden, weil sie unter __published- sind, sondern Auf- und Abbau werden nie genannt. Ich verstehe, dass sie für jeden Test aufgerufen werden sollten. Wenn ich den Delphi-Code sehe, kann ich das [Setup] -Attribut sehen, aber es scheint, dass für C++ nicht notwendig ist. Fehle ich etwas?

Antwort

1

Ich habe das gleiche Problem.

Als Abhilfe, die ich eine wenig Hilfsklasse entwickelt:

template <typename T> 
class TestEnviroment{ 
public: 
    TestEnviroment(T* theTest) 
     :itsTest(theTest) 
    { itsTest->SetUp(); } 

    ~TestEnviroment() { itsTest->TearDown(); } 

private: 
    T* itsTest; 
}; 

, die die erste lokale Variable in jedem Testfall ist:

void __fastcall UnitTest::Test() 
{ 
    TestEnviroment<UnitTest> testenv{this}; 

    // TODO Testing 
} 
+0

Nach etwas mehr Einsatz von Dunitx in CppBuilder wir raten verwende stattdessen den Dunit (ohne X). Delphi-Attribute, die von Dunitx, aber nicht von Dunit stark verwendet werden, werden von CppBuilder nicht unterstützt. – Niceman

Verwandte Themen