2016-08-29 50 views
1

我已經爲C++中的Rad Studio Berlin的DUnitX構建了示例。 該代碼的副本:http://docwiki.embarcadero.com/RADStudio/Seattle/en/DUnitX_Overview在Rad Studio的DUnitX中沒有調用SetUp

標題是:

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

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

TestAdd和TestSub被稱爲是因爲他們正在__published,但安裝和拆卸永遠不會被調用。我明白,他們應該被要求每個測試。看到Delphi代碼,我可以看到[Setup]屬性,但似乎對於C++來說並不是必需的。我錯過了什麼嗎?

回答

1

我有同樣的問題。

作爲一種解決辦法我開發了一個小的輔助類:

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

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

private: 
    T* itsTest; 
}; 

這是每一個測試用例的第一個局部變量:

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

    // TODO Testing 
} 
+0

在CppBuilder Dunitx多一點使用我奉勸後使用Dunit(沒有X)。 Delphi屬性,由Dunitx大量使用,但不是由Dunit不被CppBuilder支持。 – Niceman