У меня есть оператор, который будет метать, если операнды не подходят. (В частности, он делает десятичное умножение на int-based class, что разрешено, если оно имеет смысл (например, 2 * 0,5), но бросает, если результат не является круглым числом (например, 2 * 0,3))Лучший способ проверить, если * оператор * выбрасывает исключение
кажется, что я не могу использовать Assert.Throws NUnit в <>(), чтобы проверить это, как и все, как я могу думать, чтобы назвать это дает мне ошибку компилятора:
Assert.Throws<InvalidOperationException>(originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(dummy => originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(dummy => dummy = originalValue * badDecimalMultiplier);
Assert.Throws<InvalidOperationException>(() => dummy = originalValue * badDecimalMultiplier);
- Первый пытается передать результат операции как параметр to Throws(), который терпит неудачу, потому что Throws принимает только TestDelegate.
- Вторая ошибка с «Только назначение, вызов, приращение, декремент и новые выражения объекта могут использоваться как ошибка».
- Третий не работает с «Делегатом» NUnit.Framework.TestDelegate 'не принимает 1 аргумент ».
- Четвертый (и все вариации я мог найти) не позволит назначить необъявленной переменной (на самом деле неудивительно)
Так что я думаю, что я должен вручную поймать исключение и проверить его? Это или определить фактический метод для проведения операции, который не выглядит намного лучше.
Я ничего не пропустил? Если нет, могу ли я получить подтверждение, так что следующий человек, чтобы попытаться найти это, имеет ответ.
Я ошеломлен .. Я не могу поверить, что кто-то сумел прочитать мой вопрос, выяснить ответ на него и набрать его, прежде чем я смогу набрать ответ, который я нашел, прежде чем я закончил публикацию вопроса. Я в восторге от этого сообщества – Brondahl