2012-03-09 2 views
0

У меня есть вспомогательный класс, который проверяет XML на основе его схемы. Есть несколько статических методов/функций в сочетании с методом/функциями экземпляра, и я хочу проверить его на безопасность потоков.Тест на многопоточный блок

Каков наилучший способ проверить этот помощник с помощью MSTest (VS2008)?

+0

В целом это возможно, но если мы собираемся обсудить конкретную технику - пожалуйста, поделитесь кодом, который вы хотите проверить. – sll

ответ

0

Возможно, я неправильно понимаю ваш вопрос, почему бы не запускать несколько одновременных потоков, чтобы укомплектовать ваши классы и устранить все связанные с потоком исключения, прежде чем ждать завершения всех потоков, а затем проверить проблемы параллелизма в результатах?

0

На мой взгляд, лучший способ для модульного тестирования проблем с потоками - предсказать проблемы и дать вашему тесту конкретную причину каждой ситуации. Модульные тесты всегда должны давать одинаковый результат каждый раз, когда они работают против одного и того же кода.

Возможно, вы захотите проверить Microsoft CHESS (http://research.microsoft.com/en-us/projects/chess/), если у вас нет особых проблем для тестирования.

+0

Отдельные тесты снова проходят общедоступные методы/функции. Но этот компонент не удался в производстве (Biztalk -> Orchestration). Несколько раз сообщение было подтверждено успешно, в то время как сообщение было недействительным и vica versa .... –

0

Это довольно сложно сделать, поскольку вы не можете быть уверены в том, как ОС будет планировать выполнение потоков. Вы, скорее всего, случайно закончите тесты. Если вы можете, измените свой дизайн, чтобы вы могли уменьшить блокировки/другие методы синхронизации и дизайн для обеспечения безопасности потоков (например, не используя общее состояние).

Смежные вопросы