Как к модульному тесту метод, который порождает потоки?

Я довольно плохо знаком с TDD, но использовал его довольно долго, чтобы понять, как использовать насмешки, тупики, внедрение зависимости, инверсию управления для решения 'подобных' проблем..., но по некоторым причинам я чувствую себя очень беспокоящимся об использовании внедрения зависимости и передаче в 'IThread' (или подобный).

Чтобы дать ему некоторый основной контекст - я пытаюсь добавить модульные тесты к унаследованному приложению, и я не уверен в том, как к модульному тесту класс, кто конструктор, порождает два потока.

Единственная опция состоит в том, чтобы использовать внедрение зависимости?

Раз так что относительно функциональности, которую приносят потоки?как есть Потоки, и выполненные, в то время как (истинные) циклы и никогда не выходят из цикла (если приложение не завершается). В циклах существуют разумные блоки кода и именно этого кода, я действительно хочу иметь под тестом.

Для усугубления положения я не хочу вытаскивать всю функциональность из циклов и в открытые методы (я только тестирую открытые методы, поскольку мои тесты существуют в другом проекте), поскольку это действительно уменьшит легкое из использования класса в другом месте в коде.

Какие-либо предложения?

7
задан InvertedAcceleration 20 January 2010 в 10:25
поделиться

1 ответ

Не могли бы вы потянуть функциональность в Внутреннее методы и использовать вместо этого internalsVisileto ? Даже если вы действительно хотите, чтобы они были частными, это разумное компромиссное решение.

Если ваши темы обычно будут работать навсегда, это делает его очень сложно, чтобы проверить ... и звучит так, как вы действительно должны быть тестировать «что темы» разделяются отдельно, если они не будут О нахождении в отдельных потоках.

Один вариант, который иногда полезен, состоит в том, чтобы иметь тип интерфейса тип интерфейса - просить, чтобы выполнить действие, везде, где он видит FIT; Производство, которое можно создать новую тему, но ваш тест можно запустить действие в существующем потоке (или в потоке, который вы имели управление в пределах вашего тестового кода). Я не уверен, что это подходит для вашей ситуации здесь, где нить будет работать вечно, но вы можете подумать об этом в других ситуациях.

5
ответ дан 7 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: