2011-01-19 12 views

Odpowiedz

16

Łatwym sposobem sprawdzenia połączenia destructor:

class MockFoo : public Foo { 
    ... 
    // Add the following two lines to the mock class. 
    MOCK_METHOD0(Die, void()); 
    virtual ~MockFoo() { Die(); } 
}; 

W funkcji testu:

MockFoo* foo = new MockFoo; 
    ... 
    { 
    EXPECT_CALL(*foo, Die()); 
    } 

Szczegóły można znaleźć tutaj: Mocking Destructors

3

Chyba że jesteś przekazując --gmock_catch_leaked_mocks=0, a następnie gmock powinien już wykrywać, gdy nie uda się zniszczyć makiety. Destruktor jest tam, gdzie niezadowolone oczekiwania są oznaczane jako błędy, więc gmock ma specjalne wsparcie dla wykrywania, kiedy nie jest wywoływany.

+0

Istnieje jednak pewne zastrzeżenie: GMock * nie * wykryje wyciekanych prób, które nie mają żadnych oczekiwań związanych z nimi (ON_CALL/EXPECT_CALL). Dzieje się tak, ponieważ kontrola nieszczelności opiera się na informacjach przechowywanych w specjalnej jednostce o nazwie Rejestr GTest, a makiety bez oczekiwań nie są w niej rejestrowane. – r5ha

Powiązane problemy