⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmloutputtertest.cpp

📁 这是国外的resip协议栈
💻 CPP
字号:
#include <cppunit/config/SourcePrefix.h>#include <cppunit/XmlOutputter.h>#include <cppunit/TestFailure.h>#include <cppunit/XmlOutputter.h>#include <cppunit/XmlOutputterHook.h>#include "OutputSuite.h"#include "XmlOutputterTest.h"#include "XmlUniformiser.h"CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlOutputterTest,                                        outputSuiteName() );XmlOutputterTest::XmlOutputterTest(){}XmlOutputterTest::~XmlOutputterTest(){}void XmlOutputterTest::setUp(){  m_dummyTests.clear();  m_result = new CPPUNIT_NS::TestResultCollector();}void XmlOutputterTest::tearDown(){  delete m_result;  for ( unsigned int index =0; index < m_dummyTests.size(); ++index )    delete m_dummyTests[index];  m_dummyTests.clear();}void XmlOutputterTest::testWriteXmlResultWithNoTest(){  CPPUNIT_NS::OStringStream stream;  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );  outputter.write();  std::string actualXml = stream.str();  std::string expectedXml =     "<TestRun>"      "<FailedTests></FailedTests>"      "<SuccessfulTests></SuccessfulTests>"      "<Statistics>"        "<Tests>0</Tests>"        "<FailuresTotal>0</FailuresTotal>"        "<Errors>0</Errors>"        "<Failures>0</Failures>"      "</Statistics>"    "</TestRun>";  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );}void XmlOutputterTest::testWriteXmlResultWithOneFailure(){  addTestFailure( "test1", "message failure1", CPPUNIT_NS::SourceLine( "test.cpp", 3 ) );  CPPUNIT_NS::OStringStream stream;  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );  outputter.write();  std::string actualXml = stream.str();  std::string expectedXml =     "<TestRun>"      "<FailedTests>"        "<FailedTest id=\"1\">"          "<Name>test1</Name>"          "<FailureType>Assertion</FailureType>"          "<Location>"            "<File>test.cpp</File>"            "<Line>3</Line>"          "</Location>"          "<Message>message failure1</Message>"        "</FailedTest>"      "</FailedTests>"      "<SuccessfulTests></SuccessfulTests>"      "<Statistics>"        "<Tests>1</Tests>"        "<FailuresTotal>1</FailuresTotal>"        "<Errors>0</Errors>"        "<Failures>1</Failures>"      "</Statistics>"    "</TestRun>";  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );}void XmlOutputterTest::testWriteXmlResultWithOneError(){  addTestError( "test1", "message error1" );  CPPUNIT_NS::OStringStream stream;  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );  outputter.write();  std::string actualXml = stream.str();  std::string expectedXml =     "<TestRun>"      "<FailedTests>"        "<FailedTest id=\"1\">"          "<Name>test1</Name>"          "<FailureType>Error</FailureType>"          "<Message>message error1</Message>"        "</FailedTest>"      "</FailedTests>"      "<SuccessfulTests></SuccessfulTests>"      "<Statistics>"        "<Tests>1</Tests>"        "<FailuresTotal>1</FailuresTotal>"        "<Errors>1</Errors>"        "<Failures>0</Failures>"      "</Statistics>"    "</TestRun>";  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );}void XmlOutputterTest::testWriteXmlResultWithOneSuccess(){  addTest( "test1" );  CPPUNIT_NS::OStringStream stream;  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );  outputter.write();  std::string actualXml = stream.str();  std::string expectedXml =     "<TestRun>"      "<FailedTests></FailedTests>"      "<SuccessfulTests>"        "<Test id=\"1\">"          "<Name>test1</Name>"        "</Test>"      "</SuccessfulTests>"      "<Statistics>"        "<Tests>1</Tests>"        "<FailuresTotal>0</FailuresTotal>"        "<Errors>0</Errors>"        "<Failures>0</Failures>"      "</Statistics>"    "</TestRun>";  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );}void XmlOutputterTest::testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSuccess(){  addTestFailure( "test1", "failure1" );  addTestError( "test2", "error1" );  addTestFailure( "test3", "failure2" );  addTestFailure( "test4", "failure3" );  addTest( "test5" );  addTestError( "test6", "error2" );  addTest( "test7" );  CPPUNIT_NS::OStringStream stream;  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );  outputter.write();  std::string actualXml = stream.str();  std::string expectedXml =     "<TestRun>"       "<FailedTests>"        "<FailedTest id=\"1\">"          "<Name>test1</Name>"          "<FailureType>Assertion</FailureType>"          "<Message>failure1</Message>"        "</FailedTest>"        "<FailedTest id=\"2\">"          "<Name>test2</Name>"          "<FailureType>Error</FailureType>"          "<Message>error1</Message>"        "</FailedTest>"        "<FailedTest id=\"3\">"          "<Name>test3</Name>"          "<FailureType>Assertion</FailureType>"          "<Message>failure2</Message>"        "</FailedTest>"        "<FailedTest id=\"4\">"          "<Name>test4</Name>"          "<FailureType>Assertion</FailureType>"          "<Message>failure3</Message>"        "</FailedTest>"        "<FailedTest id=\"6\">"          "<Name>test6</Name>"          "<FailureType>Error</FailureType>"          "<Message>error2</Message>"        "</FailedTest>"      "</FailedTests>"     "<SuccessfulTests>"        "<Test id=\"5\">"          "<Name>test5</Name>"        "</Test>"        "<Test id=\"7\">"          "<Name>test7</Name>"        "</Test>"      "</SuccessfulTests>"      "<Statistics>"        "<Tests>7</Tests>"        "<FailuresTotal>5</FailuresTotal>"        "<Errors>2</Errors>"        "<Failures>3</Failures>"      "</Statistics>"    "</TestRun>";  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );}class XmlOutputterTest::MockHook : public CPPUNIT_NS::XmlOutputterHook{public:  MockHook( int &beginCalls,            int &endCalls,            int &statisticsCalls,            int &successfulTestCalls,            int &failedTestCalls )      : m_successfulTestCalls( successfulTestCalls )      , m_failedTestCalls( failedTestCalls )      , m_beginCalls( beginCalls )      , m_endCalls( endCalls )      , m_statisticsCalls( statisticsCalls )  {  }  void beginDocument( CPPUNIT_NS::XmlDocument *document )  {    ++m_beginCalls;  }  void endDocument( CPPUNIT_NS::XmlDocument *document )  {    ++m_endCalls;  }  void failTestAdded( CPPUNIT_NS::XmlDocument *document,                      CPPUNIT_NS::XmlElement *testElement,                      CPPUNIT_NS::Test *test,                      CPPUNIT_NS::TestFailure *failure )  {    ++m_failedTestCalls;  }  void successfulTestAdded( CPPUNIT_NS::XmlDocument *document,                            CPPUNIT_NS::XmlElement *testElement,                            CPPUNIT_NS::Test *test )  {    ++m_successfulTestCalls;  }  void statisticsAdded( CPPUNIT_NS::XmlDocument *document,                        CPPUNIT_NS::XmlElement *statisticsElement )  {    ++m_statisticsCalls;  }private:  int &m_beginCalls;  int &m_endCalls;  int &m_statisticsCalls;  int &m_successfulTestCalls;  int &m_failedTestCalls;};void XmlOutputterTest::testHook(){  int begin =0, end =0, statistics =0, successful =0, failed =0;  MockHook hook( begin, end, statistics, successful, failed );  addTest( "test1" );  addTest( "test2" );  addTest( "test3" );  addTestFailure( "testfail1", "assertion failed" );  addTestError( "testerror1", "exception" );  CPPUNIT_NS::OStringStream stream;  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );  outputter.addHook( &hook );  outputter.write();  CPPUNIT_ASSERT_EQUAL( 1, begin );  CPPUNIT_ASSERT_EQUAL( 1, end );  CPPUNIT_ASSERT_EQUAL( 1, statistics );  CPPUNIT_ASSERT_EQUAL( 3, successful );  CPPUNIT_ASSERT_EQUAL( 2, failed );}void XmlOutputterTest::addTest( std::string testName ){  CPPUNIT_NS::Test *test = makeDummyTest( testName );  m_result->startTest( test );  m_result->endTest( test );}void XmlOutputterTest::addTestFailure( std::string testName,                                  std::string message,                                  CPPUNIT_NS::SourceLine sourceLine ){  addGenericTestFailure( testName, CPPUNIT_NS::Message(message), sourceLine, false );}void XmlOutputterTest::addTestError( std::string testName,                                std::string message,                                CPPUNIT_NS::SourceLine sourceLine ){  addGenericTestFailure( testName, CPPUNIT_NS::Message(message), sourceLine, true );}void XmlOutputterTest::addGenericTestFailure(  std::string testName,                                          CPPUNIT_NS::Message message,                                          CPPUNIT_NS::SourceLine sourceLine,                                          bool isError ){  CPPUNIT_NS::Test *test = makeDummyTest( testName );  m_result->startTest( test );  CPPUNIT_NS::TestFailure failure( test,                                 new CPPUNIT_NS::Exception( message, sourceLine ),                                isError );  m_result->addFailure( failure );  m_result->endTest( test );}CPPUNIT_NS::Test *XmlOutputterTest::makeDummyTest( std::string testName ){  CPPUNIT_NS::Test *test = new CPPUNIT_NS::TestCase( testName );  m_dummyTests.push_back( test );  return test;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -