Re: cppUnit results
От: conraddk Россия  
Дата: 03.12.03 15:28
Оценка:
По мотивам CppUnit::TextTestProgressListener написал я вот такой класс:
class CPPUNIT_API TextTestProgressListenerEx : public CppUnit::TextTestProgressListener
{
public:
    TextTestProgressListenerEx() {}
    virtual ~TextTestProgressListenerEx() {}
    void startTest( CppUnit::Test *test );
    void addFailure  ( const CppUnit::TestFailure & failure );
    void endTest( CppUnit::Test *test );
private:
    TextTestProgressListenerEx( const TextTestProgressListenerEx &copy );
    void operator =( const TextTestProgressListenerEx &copy );
private:
    bool hadError;
};

void 
TextTestProgressListenerEx::startTest( CppUnit::Test *test )
{
    hadError = false;
    std::cerr << test->getName();
    std::cerr.flush();
}

void 
TextTestProgressListenerEx::addFailure( const CppUnit::TestFailure &failure )
{
    hadError = true;
    std::cerr << ( failure.isError() ? "\tError!" : "\tFailure!" );
    std::cerr.flush();
}

void 
TextTestProgressListenerEx::endTest( CppUnit::Test *test )
{
    if (!hadError)
        std::cerr << "\tOK";
    std::cerr << std::endl;
    std::cerr.flush();
}

Он выводит результаты по каждому тест-кейсу. Если хочется, например, их группировать по сюитам, надо анализировать имя приходящего теста. Дело в том, что для сюит слушатели прогресса не вызываются Но имена тестов в CppUnit писаны в совершенно стандартном формате, поэтому можно, ориентируясь по точкам, выводить все это более красиво. Например, не писать имя каждого тест-кейса, а только для сюит. Для тест-кейсов же выводить, скажем, точку...
... << RSDN@Home 1.1 beta 2 >>
Все на свете должно происходить медленно и неправильно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.