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