Поделиться через


Использование классов Assert

Классы Assert пространства имен UnitTestingFramework служат для проверки определенных функциональных возможностей. Метод модульного теста использует код метода в коде разработки, но выдает результаты по поведению кода только в том случае, если включены операторы Assert.

Примечание

Модульные тесты могут формировать данные покрытия кода независимо от наличия операторов Assert.Дополнительные сведения см. в разделе Практическое руководство. Получение данных о покрытии кода.

Типы классов Assert

Пространство имен Microsoft.VisualStudio.TestTools.UnitTesting предоставляет несколько типов классов Assert.

Assert

В методе теста можно вызывать любое число методов класса Assert, таких как Assert.AreEqual(). Класс Assert содержит много методов для выбора, и многие из этих методов имеют несколько перегрузок.

CollectionAssert

Класс CollectionAssert служит для сравнения коллекций объектов и проверки состояния одной или нескольких коллекций.

StringAssert

Класс StringAssert служит для сравнения строк. Этот класс содержит различные полезные методы, такие как such as StringAssert.Contains, StringAssert.Matches и StringAssert.StartsWith.

AssertFailedException

Исключение AssertFailedException возникает в случае невыполнения теста. Причиной невозможности выполнения теста может быть истечение времени ожидания, непредвиденное исключение или оператор Assert, создающий результат "Ошибка".

AssertInconclusiveException

Исключение AssertInconclusiveException возникает при каждом результате теста с неопределенным результатом. Как правило, оператор Assert.Inconclusive добавляется к тесту, над которым еще ведется работа, для обозначения его неготовности к выполнению.

Примечание

Альтернативным вариантом может быть обозначение теста, который еще не готов к выполнению, атрибутом Ignore.Однако, недостатком в этом случае является невозможность простого создания отчета по числу тестов, которые еще необходимо реализовать.

UnitTestAssertException

При написании нового класса исключения Assert наследование этого класса от базового класса UnitTestAssertException упрощает выявление исключения как ошибки подтверждения, а не непредвиденного исключения, выдаваемого тестом или продуктивным кодом.

ExpectedExceptionAttribute

Если необходимо, чтобы метод теста проверял, что исключение, возникающее в этом методе, на самом деле является требуемым исключением, включите в метод теста атрибут ExpectedExceptionAttribute.

Перегрузка небезопасных типов с помощью Assert.AreEqual

Метод Assert.AreEqual имеет много перегрузок, позволяющих сравнивать определенные типы данных. При этом метод Assert.AreEqual не имеет перегрузки для небезопасных типов, таких как тип, данных указателя.

Чтобы продемонстрировать это, создайте консольное приложение C# со следующим классом.

unsafe public class CUnsafeTest
{
    private int* m_pX = null;
    unsafe public void VoidPtr(void* voidPtr)
    {
    }
    unsafe public int* ReturnPointer(float* fPtr, TestThis* pTestThis)
    {
        int x = 5;
        return &x;
    }
}

Теперь создайте тесты для класса CunsafeTest. Будет получен код, аналогичный приведенному в следующем примере.

[TestMethod()]
public void ReturnPointerTest()
{
    unsafe
    {
        CodeGen.BVT.Unsafe.CUnsafeTest target;
        target = new CodeGen.BVT.Unsafe.CUnsafeTest();
        //  TODO: Initialize to an appropriate value
        System.Single* fPtr = null;
        //  TODO: Initialize to an appropriate value
        TestThis* pTestThis = null;
        //  TODO: Initialize to an appropriate value
        System.Int32* expected = null;
        System.Int32* actual;
        actual = target.ReturnPointer(fPtr, pTestThis);
        Assert.AreEqual(actual, expected);
            // On the preceding line, no overload is available. 
    }
}

В этом случае оператор Assert.AreEqual следует заменить собственным кодом проверки.

См. также

Ссылки

Microsoft.VisualStudio.TestTools.UnitTesting

Основные понятия

Создание и запуск модульных тестов для существующего кода