Как мне написать модульный тест, который должен провалиться? - PullRequest
0 голосов
/ 18 января 2020

Если я сделаю тест, который должен выдать фатальную ошибку, как я могу справиться с этим? Например, как я могу написать этот тест, чтобы убедиться, что переменная удалена правильно:

[Test]
public static void TestScope()
{
    String str;
    {
        str = scope .();
    }
    str.ToUpper(); // str should be marked as deleted here
}

1 Ответ

0 голосов
/ 18 января 2020

Вы можете параметризовать атрибут Test как Test(ShouldFail=true).

В процессе тестирования сначала запускаются все тесты, которые не должны завершиться неудачей, а затем запускаются все тесты, которые должны. Если какие-либо тесты, которые должны провалиться, не сработают, остальные тесты, которые должны провалиться, все еще выполняются

Например, тестирование этого класса:

class Program
{
    [Test(ShouldFail=true)]
    public static void TestScopeShouldFailButSucceeds()
    {
        String str;
        {
        str = scope:: .();
        }

        str.ToUpper(); // will not fail
    }

    [Test(ShouldFail=true)]
    public static void TestScopeShouldFail()
    {
        String str;
        {
        str = scope .();
        }

        str.ToUpper(); // will fail
    }

    [Test]
    public static void TestScopeShouldNotFail()
    {
        String str;
        {
        str = scope:: .();
        }

        str.ToUpper(); // will not fail
    }

    public static void Main()
    {

    }

}

... сначала успешно завершит TestScopeShouldNotFail, затем неожиданно завершит TestScopeShouldFailButSucceeds, а затем, как ожидается, завершится с ошибкой TestScopeShouldFail. Таким образом, он выдаст один неудачный тест для TestScopeShouldFailButSucceeds.

...