Общепринятая практика - связать логику потоков с бизнес-логикой? Я задаю вопросы, связанные с тестированием, задаваясь вопросом, есть ли преимущества/недостатки для тестирования бизнес-аналитики, привязанного к логике потоков. Рассмотрим следующий,Развязка логики потоков из бизнес-логики?
class Thread { ... }
class FooThread : public Thread {
/* business intelligence coupled to threading */
}
или,
class Thread { ... }
class Foo {
...
/* once again coupled */
Thread th;
}
Эти подходы, кажется, идут несколько против пытается абстрагироваться от зависимостей при тестировании классов. Было бы возможно/приемлемо вместо этого создать класс, который может быть полностью исключен из потоковой обработки, возможно, с использованием шаблонов?
template<class SomeFooClass>
class Thread { ... }
class Foo {
/* this class can be tested separately */
}
typedef Thread<Foo> FooThread;
Будут ли какие-либо выгоды/недостатки? Можно ли использовать этот же подход для отладки бизнес-логики от других общих шаблонов проектирования?
Не будет ли смысл отделять потоки от бизнес-логики, чтобы протестировать чистую бизнес-логику? Зачем тестировать интерфейс «runnable» или как он отличается от класса, связанного с его поточной обработкой? – jwalk
Интерфейс runnable будет простым/чистым кодом. Вы, конечно, можете протестировать под ним, если хотите. Если вы пытаетесь доказать, что рабочий поток выполняет правильную последовательность шагов (в отличие от проверки того, что объекты, с которыми они манипулируют, сами по себе являются правильными), то runnable действует как чистый контейнер для действий, которые должен предпринять рабочий. – phs
Итак, Runnable будет в основном обычным интерфейсом для типов, которые могут быть переданы и выполнены отдельным объектом потока? – jwalk