Boost unit testing main function?

后端 未结 4 1948
[愿得一人]
[愿得一人] 2021-01-11 16:51

How do I define my own main() function when testing with boost?

Boost is using it\'s own main function, but I\'m using a custom memory manager and it ne

相关标签:
4条回答
  • 2021-01-11 17:14

    I do not believe you actually need your own main. I think you are much better off with global fixture:

    struct AllocatorSetup {
        AllocatorSetup()   { /* setup your allocator here */ }
        ~AllocatorSetup()  { /* shutdown your allocator/check memory leaks here */ }
    };
    
    BOOST_GLOBAL_FIXTURE( AllocatorSetup );
    
    0 讨论(0)
  • 2021-01-11 17:15

    You have to define

    BOOST_TEST_NO_MAIN

    before the boost includes.

    BOOST_TEST_MAIN

    is the default. http://www.boost.org/doc/libs/1_36_0/libs/test/doc/html/utf/compilation.html

    0 讨论(0)
  • 2021-01-11 17:17

    You can define a static object and his constructor will execute before main:

    class Alloc_Setup {
       Alloc_Setup() {
           // Your init code
       }
       ~Alloc_Setup() {
           // Your cleanup
       }
    };
    Alloc_Setup setup;
    int main() {} // (generated by boost)
    
    0 讨论(0)
  • 2021-01-11 17:17

    Memory can be allocated before main:

    static int* x = new int(1);
    int main() { return *x; }
    

    And you could make your memory manager a global variable as well,
    but you can't enforce a specific order of global variables initialization. (in standard C++ at least)

    In Windows you could put your memory manager into a DLL, at it will be initialized before application entry point will be called, but still, something other may allocate a memory before - another DLL, or CRT of your DLL.

    0 讨论(0)
提交回复
热议问题