[personal profile] dememax
О модульном тестировании как таковом можете почитать здесь: http://hitfounder.livejournal.com/21424.html
Собственно, этот пост и подвигнул меня написать.

Хотел бы поделиться тем, как можно писать многопоточные тесты с использованием CppUnit.

Дело в том, что CppUnit реализует механизм утверждений через макросы+исключения.
Заводим некую переменную cppunit_ex, которая имет тип CppUnit::Exception.
Затем в функции нитки оформляем перехват:
void * thread_proc(void *context)
{
    try
    {
        return unsafe_thread_proc(context);
    }
    catch(const CppUnit::Exception & ex)
    {
        std::cerr << "thread_proc(): cppunit exception :" << ex.what() << std::endl;
        cppunit_ex = ex;
    }
    catch(const std::exception & ex)
    {
        std::cerr << "thread_proc(): exception :" << ex.what() << std::endl;
    }
    catch(...)
    {
        std::cerr << "thread_proc(): unknown exception" << std::endl;
        throw; // Update: см. Вопрос: Как дела с catch(...) в MS?
    }
}
Ну, вот, теперь можно в unsafe_thread_proc() писать привычный код с использованием макросов тестового фреймворка. А затем, в основной нитке нужно сделать что-то типа:
if (cppunit_ex.sourceLine().isValid())
    throw cppunit_ex;
Я, конечно, здесь упрощаю, там ещё нужно заботиться о запуске, завершении и доступе из разных нитей, но это вы уже и сами додумаете.

В отношении к тестированию, у меня было три периода в жизни:
  1. тесты?
  2. хорошо бы написать тесты
  3. без тестов продукт не отдавать
Но бывают, конечно, казусы. Например, в Contour Components мне дали задание переписать генератор отчётов, для него тесты написать было практически невозможно, т.к. результатом была графика на бумаге.

Date: 2009-10-04 01:29 pm (UTC)
From: [identity profile] venik2007.livejournal.com
эммм... я ничего не поняла, но я и не программист.
зато я знаю, кому это может быть полезно!
большое спасибо :))

Digitizing library collections in canada

Date: 2011-03-17 05:31 pm (UTC)
From: [identity profile] xunopehaxo.livejournal.com
It was not some sort of horrifying actually. Daleville indiana public library (http://hisitebefa.cwahi.net/Books-For-Teens/103-daleville-indiana-public-library.php). Even in the internet there are online groups of reading enthusiasts who want to share their interest to the world but do not have the time to join and participate in traditional book clubs.

Спасибо за инфу

Date: 2011-06-03 11:09 pm (UTC)
From: [identity profile] mandafoby.livejournal.com
Автор +1Image (http://site-sex-znakomstva.ru/)

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 10th, 2025 09:29 am
Powered by Dreamwidth Studios