How to process Boost.Test output with Eclipse

后端 未结 3 858
别那么骄傲
别那么骄傲 2020-12-29 13:27

I\'m using Eclipse CDT and Boost.Test(with Boost.Build). I would like Eclipse to parse output of Boost.Test generated during by run of test suites during build.
Does an

相关标签:
3条回答
  • 2020-12-29 13:32

    There is also a nice plugin called cdt c/c++ tests runner, which supports Google test, boost test, and qt test.

    You can find instructions at the following link:

    https://github.com/xgsa/cdt-tests-runner/wiki/Tutorial

    I have been using it for a while, and found it efficient and nice. It has features like a JUnit plugin for Java.

    0 讨论(0)
  • 2020-12-29 13:34

    Go to Window > Preferences. In the preferences dialog, choose C/C++ > Build from the options tree. Under error parsers, click "Add..." In the new dialog, replace "Regex Error Parser" with something like "Boost Unit Test Error Parser".

    In the Error Parser Options pane, add the following lines. I can't guarantee that these rules catch all possible output from boost unit tests, but so far they work for me, and we can always add more later:

    Severity | Pattern                                          | File | Line | Description
    Error    | (.*)\((\d*)\): ((fatal )?error in ".*":.*)       | $1   | $2   | $3
    Error    | \*\*\* (\d* failures detected in test suite ".*")|      |      | $1
    Info     | (.*)\((\d*)\): (last checkpoint)                 | $1   | $2   | $3
    

    Note that the new parser will not automatically be used in existing projects. To enable the parser for an existing project, go to Project > Properties, C/C++ Make Project, Error Parsers tab. If the newly added parser is not in the list, click "Restore Defaults", and it should now be available.

    0 讨论(0)
  • 2020-12-29 13:49

    I had the same problem of my IDE (gedit) not recognizing the output format of Boost.Test (which is not compatible with gnu and clang output for some reason).

    You can change the output format programmatically by sticking this in your test(s):

    #include<boost/test/output/compiler_log_formatter.hpp>
    struct gedit_config{
        struct formatter : boost::unit_test::output::compiler_log_formatter{
            void print_prefix(std::ostream& out, boost::unit_test::const_string file, std::size_t line){
                out<< file <<':'<< line <<": ";
            }
        };
        gedit_config(){boost::unit_test::unit_test_log.set_formatter(new formatter);}
    };
    BOOST_GLOBAL_FIXTURE(gedit_config);
    

    (original answer here: https://stackoverflow.com/a/64619245/225186)

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