NUnit Unit Test имеет «ExpectedException», но по-прежнему не удается в случае исключения - PullRequest
4 голосов
/ 18 декабря 2009

У меня есть модульный тест, который не проходит, потому что System.ArgumentException выбрасывается, хотя я ожидаю этого, и это преднамеренное поведение - что я пропустил?

[Test]
[ExpectedException(typeof(ArgumentException), ExpectedMessage = "Seconds from midnight cannot be more than 86400 in 010100712386401000000012")]
public void TestParsingCustomReferenceWithInValidSecondsFromMidnight()
{
    // I am expecting this method to throw an ArgumentException:
    CustomReference.Parse("010100712386401000000012");
}

Я также пытался без установки ExpectedMessage - без разницы.

Ответы [ 3 ]

6 голосов
/ 18 декабря 2009

Вы пробовали синтаксис утверждения?

Assert.Throws<ArgumentException>(
    () => CustomReference.Parse("010100712386401000000012"),
    "Seconds from midnight cannot be more than 86400 in 010100712386401000000012"
);
2 голосов
/ 18 декабря 2009

Правильно ли ожидаемое сообщение? Это точное то же самое сообщение, которое выбрасывает CustomReference.Parse (string)? Например, это , а не , что отображается в консоли NUnit.

Я не знаю другой причины, по которой это не сработает. Какую версию NUnit вы используете?

1 голос
/ 18 декабря 2009

Что произойдет, если вы сделаете это?

[TestFixture]
public class CustomReferenceTests
{
    [Test]
    [ExpectedException(typeof(ArgumentException))]
    public void TestParsingCustomReferenceWithInValidSecondsFromMidnight()
    {
        // I am expecting this method to throw an ArgumentException:
        CustomReference.Parse("010100712386401000000012");
    }

    [Test]
    [ExpectedException(typeof(ArgumentException), ExpectedMessage = "Seconds from midnight cannot be more than 86400 in 010100712386401000000012")]
    public void TestParsingCustomReferenceWithInValidSecondsFromMidnightWithExpectedMessage()
    {
        // I am expecting this method to throw an ArgumentException:
        CustomReference.Parse("010100712386401000000012");
    }
}

public class CustomReference
{
    public static void Parse(string s)
    {
        throw new ArgumentException("Seconds from midnight cannot be more than 86400 in 010100712386401000000012");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...