Многопоточный юнит-тест - PullRequest
0 голосов
/ 09 марта 2012

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

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

Ответы [ 3 ]

0 голосов
/ 09 марта 2012

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

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

0 голосов
/ 09 марта 2012

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

0 голосов
/ 09 марта 2012

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

...