Hej!
Dzisiaj
pokażę Wam, jak za pomocą ostatniej działającej wersji szkieletu
HippoMocks zastąpić funkcję z języka C swoją własną (innymi słowy, to
będzie tzw. mock funkcji). Jako że życie to nie film, do takiego
przedsięwzięcia będziemy potrzebować kompilatora C++ (innymi słowy -
nawet jeśli Twój produkt jest cały pisany w C, to na potrzeby testów
jednostkowych musisz kompilować go kompilatorem C++).
Moje środowisko (na wszelki wypadek, gdyby coś komuś nie chodziło):
1. Kompilator g++ 4.6.3
2. System operacyjny Ubuntu Linux 12.04 z zainstalowanym pakietem build-essentials
3.
Nagłówek hippomocks.h ściąnięty ze strony
http://www.assembla.com/code/hippomocks/git/nodes/master/HippoMocks/hippomocks.h
(należy kliknąć ikonkę Download).
4. Platformę X86 (bodajże na x86-64 też powinno działać) - Sparc, sorry...
4. Platformę X86 (bodajże na x86-64 też powinno działać) - Sparc, sorry...
Teraz
jedna mała uwaga: biblioteka HippoMocks w całości zawarta jest w jednym
pliku nagłówkowym hippomocks.h. Ten plik musimy sobie dorzucić do
swojej kompilacji. Natomiast sama kompilacja tego pliku może nie
przejść!! U mnie wysypywał się na instrukcji prinff(), do której nie
miał nagłówka:
../src/hippomocks.h:3990:94: error: ‘printf’ was not declared in this scope
make: *** [src/Main.o] Błąd 1
make: *** [src/Main.o] Błąd 1
Na szczęście można temu szybko zaradzić, znajdując w hippomocks.h pierwszy ciąg instrukcji #include i dodając tam: #include <stdio.h>
No i na koniec mały przykład, jak to działa:
#include <iostream>
#include "hippomocks.h"
#include "hippomocks.h"
int ReturnOne()
{
return 1;
}
int main()
{
HippoMocks::MockRepository mocks;
mocks.OnCallFunc(::ReturnOne).Return(123);
std::cout << ReturnOne() << std::endl; // 123
{
return 1;
}
int main()
{
HippoMocks::MockRepository mocks;
mocks.OnCallFunc(::ReturnOne).Return(123);
std::cout << ReturnOne() << std::endl; // 123
return 0;
}
Powodzenia!
No comments:
Post a Comment