2016-03-01 4 views
0

Мне нужно написать тест, который проверяет, что создание объекта и передача нулевых аргументов вызовут ArgumentNullException.Правильный синтаксис для NUnit Throws

Это то, что у меня есть:

[Test] 
public void ThrowsOnNullDependency() 
{ 
    Assert.Throws(() => new FileService(null), Throws.Exception.TypeOf<ArgumentNullException>()); 
} 

И я получаю следующие исключения. Я видел несколько разных сайтов и ответы SO, которые, похоже, используют разные функции и синтаксис NUnit. Каков правильный способ проверить, что что-то генерирует исключение или нет с NUnit3?

CS1503 Аргумент 2: не может конвертировать из «NUnit.Framework.Constraints.ExactTypeConstraint» до «NUnit.Framework.TestDelegate»

CS1660 Невозможно преобразовать лямбда-выражения к типу «IResolveConstraint», потому что это не делегат тип

+0

Почему вы не добавить атрибут ExpectedException к методу испытания – Gurpreet

+0

Поскольку, который был удален в NUnit 2 и я использую NUnit 3. – user9993

+1

Просто чтобы прояснить ситуацию, атрибут [ExpectedException] (http://www.nunit.org/index.php?p=exception&r=2.5) _was_ присутствует в NUnit 2.x, но был удален в NUnit 3 – stuartd

ответ

2

Если вы просто хотите проверить, что исключение, то любой из них будет работать:

Assert.Throws<ArgumentNullException>(() => new FileService(null)); 

Assert.Throws(typeof(ArgumentNullException),() => new FileService(null)); 

Если вы хотите использовать ThrowsConstraint for more control over the check, то синтаксис будет таким, как вы используете Assert.That с ограничением:

Assert.That(() => new FileService(null), Throws.TypeOf<ArgumentNullException>()); 
+0

http://stackoverflow.com/q/15014461/2903863 – Gurpreet

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