Повысить юнит тестирование основной функции?
Как я могу определить свой собственный main()
функция при тестировании с наддувом?
Boost использует свою собственную основную функцию, но я использую собственный менеджер памяти, и его нужно инициализировать перед выделением какой-либо памяти, иначе я получу ошибки.
4 ответа
Я не верю, что тебе на самом деле нужен твой главный. Я думаю, что вам гораздо лучше с глобальным приспособлением:
struct AllocatorSetup {
AllocatorSetup() { /* setup your allocator here */ }
~AllocatorSetup() { /* shutdown your allocator/check memory leaks here */ }
};
BOOST_GLOBAL_FIXTURE( AllocatorSetup );
Вы должны определить
BOOST_TEST_NO_MAIN
до повышения включает в себя.
BOOST_TEST_MAIN
по умолчанию. http://www.boost.org/doc/libs/1_36_0/libs/test/doc/html/utf/compilation.html
Вы можете определить статический объект, и его конструктор будет выполняться до main:
class Alloc_Setup {
Alloc_Setup() {
// Your init code
}
~Alloc_Setup() {
// Your cleanup
}
};
Alloc_Setup setup;
int main() {} // (generated by boost)
Память может быть выделена раньше main
:
static int* x = new int(1);
int main() { return *x; }
И вы могли бы сделать свой менеджер памяти глобальной переменной,
но вы не можете навязать определенный порядок инициализации глобальных переменных. (в стандарте C++ по крайней мере)
В Windows вы можете поместить свой менеджер памяти в DLL, при этом он будет инициализирован до вызова точки входа в приложение, но, тем не менее, что-то другое может выделить память раньше - другую DLL или CRT вашей DLL.