Лично я бы выбрал конкретное исключение, как вы делаете в своем примере. Это самый простой способ получить правильную информацию, а также самый очевидный для любого читателя теста.
Хотя тайм-аут будет работать так же хорошо, он будет иметь тот же эффект, но на самом деле просто увеличит время, необходимое длязапустите ваш тест.
Читатели вашего теста могут спросить, почему вы используете тайм-аут в первую очередь. Может быть неясно, почему определенный интервал использовался для ожидания завершения.
Я бы также предпочел не бросать System.Exception
, а конкретное пользовательское исключение, такое как DummyException
, чтобы прояснить, что это чисто для тестированияи не имеет ничего общего с фактическим поведением, вызванным вызовом метода.
Вместо вашего блока try-catch я бы тоже предпочел это, но это своего рода личное предпочтение.
var ex = Assert.Throws<DummyException>(action);
Assert.Equal(ex.Message, "Method called");