📄 compileroutputter.h
字号:
#ifndef CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H#define CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H#include <cppunit/Portability.h>#include <cppunit/Outputter.h>#include <iostream>CPPUNIT_NS_BEGINclass Exception;class SourceLine;class Test;class TestFailure;class TestResultCollector;/*! * \brief Outputs a TestResultCollector in a compiler compatible format. * \ingroup WritingTestResult * * Printing the test results in a compiler compatible format (assertion * location has the same format as compiler error), allow you to use your * IDE to jump to the assertion failure. Location format can be customized (see * setLocationFormat() ). * * For example, when running the test in a post-build with VC++, if an assertion * fails, you can jump to the assertion by pressing F4 (jump to next error). * * Heres is an example of usage (from examples/cppunittest/CppUnitTestMain.cpp): * \code * int main( int argc, char* argv[] ) { * // if command line contains "-selftest" then this is the post build check * // => the output must be in the compiler error format. * bool selfTest = (argc > 1) && * (std::string("-selftest") == argv[1]); * * CppUnit::TextUi::TestRunner runner; * runner.addTest( CppUnitTest::suite() ); // Add the top suite to the test runner * * if ( selfTest ) * { // Change the default outputter to a compiler error format outputter * // The test runner owns the new outputter. * runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), * std::cerr ) ); * } * * // Run the test and don't wait a key if post build check. * bool wasSuccessful = runner.run( "", !selfTest ); * * // Return error code 1 if the one of test failed. * return wasSuccessful ? 0 : 1; * } * \endcode */class CPPUNIT_API CompilerOutputter : public Outputter{public: /*! \brief Constructs a CompilerOutputter object. * \param result Result of the test run. * \param stream Stream used to output test result. * \param locationFormat Error location format used by your compiler. Default * to \c CPPUNIT_COMPILER_LOCATION_FORMAT which is defined * in the configuration file. See setLocationFormat() for detail. * \see setLocationFormat(). */ CompilerOutputter( TestResultCollector *result, std::ostream &stream, const std::string &locationFormat = CPPUNIT_COMPILER_LOCATION_FORMAT ); /// Destructor. virtual ~CompilerOutputter(); /*! \brief Sets the error location format. * * Indicates the format used to report location of failed assertion. This format should * match the one used by your compiler. * * The location format is a string in which the occurence of the following character * sequence are replaced: * * - "%l" => replaced by the line number * - "%p" => replaced by the full path name of the file ("G:\prg\vc\cppunit\MyTest.cpp") * - "%f" => replaced by the base name of the file ("MyTest.cpp") * * Some examples: * * - VC++ error location format: "%p(%l):" => produce "G:\prg\MyTest.cpp(43):" * - GCC error location format: "%f:%l:" => produce "MyTest.cpp(43):" * * Thoses are the two compilers currently <em>supported</em> (gcc format is used if * VC++ is not detected). If you want your compiler to be automatically supported by * CppUnit, send a mail to the mailing list (preferred), or submit a feature request * that indicates how to detect your compiler with the preprocessor (#ifdef...) and * your compiler location format. */ void setLocationFormat( const std::string &locationFormat ); /*! \brief Creates an instance of an outputter that matches your current compiler. * \deprecated This class is specialized through parameterization instead of subclassing... * Use CompilerOutputter::CompilerOutputter instead. */ static CompilerOutputter *defaultOutputter( TestResultCollector *result, std::ostream &stream ); void write(); void setNoWrap(); void setWrapColumn( int wrapColumn ); int wrapColumn() const; virtual void printSuccess(); virtual void printFailureReport(); virtual void printFailuresList(); virtual void printStatistics(); virtual void printFailureDetail( TestFailure *failure ); virtual void printFailureLocation( SourceLine sourceLine ); virtual void printFailureType( TestFailure *failure ); virtual void printFailedTestName( TestFailure *failure ); virtual void printFailureMessage( TestFailure *failure );private: /// Prevents the use of the copy constructor. CompilerOutputter( const CompilerOutputter © ); /// Prevents the use of the copy operator. void operator =( const CompilerOutputter © ); virtual bool processLocationFormatCommand( char command, const SourceLine &sourceLine ); virtual std::string extractBaseName( const std::string &fileName ) const;private: TestResultCollector *m_result; std::ostream &m_stream; std::string m_locationFormat; int m_wrapColumn;};CPPUNIT_NS_END#endif // CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -