Visual Studio Unit Testing Framework – инструмент модульного тестирования для платформы .NET, встроенный в среду разработки Visual Studio 2005 и выше. Чтобы определить, что класс является тестирующим, необходимо пометить его атрибутом [TestClass]. Если класс помечен этим атрибутом, то он может содержать в себе тестовые методы. Обычно тестирующий класс называют так же, как и тестируемый, только с префиксом Test.
В тестирующем классе могут содержаться тестирующие методы и обычно для всех методов тестируемого класса, которые возвращают значение, создается отдельный тестирующий метод. Тестирующий метод обычно называют, так же как и тестируемый, только с префиксом Test.
Кроме тестирующих методов в тестирующем классе могут быть методы инициализации и очистки. Метод инициализации помечается атрибутом [TestInitialize] и позволяет инициализировать необходимые переменные перед выполнением метода-теста. Метод очистки помечается атрибутом [TestCleanup] и позволяет очистить результаты выполнения теста, например, очистить файл, удалить лишние записи с базы данных, присвоить переменным значения по умолчанию.
Кроме методов инициализации и очистки на уровне теста, в тестирующем классе могут присутствовать методы инициализации и очистки уровня класса. Эти методы вызываются один раз. Методы инициализации уровня класса вызывается один раз перед вызовом первого теста, а метод очистки уровня класса вызывается после выполнения последнего теста. Метод инициализации уровня класса помечается атрибутом [ClassInitialize], а метод очистки уровня класса помечается атрибутом [ClassCleanup]. Ниже приведен пример тестового класса.
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Test
{
[TestClass]
public class TestClass
{
public TestClass(){}
//Тестовый контекст
private TestContext testContextInstance;
public TestContext getTestContext(){
return testContextInstance;
}
public void setTestContext(TestContext testContext){
this.testContextInstance = testContextInstance;
}
[ClassInitialize]
public static void TestClassInitialize(TestContext testContext) {
/*Код будет выполняться до вызова первого теста*/
}
[ClassCleanup]
public static void TestCClassCleanup(){
/*Код будет выполняться после вызова последнего теста*/
}
[TestInitialize]
public void TestInitialize(){
/*Код будет выполняться перед выполнением каждого теста*/
}
[TestCleanup]
public void TestCleanup(){
/*Код будет выполняться после выполнением каждого теста*/
}
[TestMethod]
public void TestMethod(){
/*Код теста*/
}
}
}
В тестовом классе для проверки значений, возвращаемых тестируемыми методами, используются статические методы класса Assert.
Список всех методов класса Assert приведен в таблице 6.1.
Таблица 6.1 – Методы класса Assert для тестирования
Название метода
Описание
Assert.AreEqual
Проверяет, равны ли заданные значения. Ошибка возникает, если значения неравны.
Assert.AreNotEqual
Проверяет, чтобы заданные значения небыли равны. Ошибка возникает если значения, если значения равны.
Assert.AreSame
Проверяет, указывают ли ссылки на один и тот же объект. Ошибка возникает, если ссылки указывают на разные объекты.
Assert.AreNotSame
Проверяет, чтобы ссылки не указывали на один и тот же объект. Ошибка возникает, если ссылки указывают на один и тот же объект.
Assert.Fail
Ошибка возникает без каких-либо проверок.
Assert.IsTrue
Проверяет, является ли передаваемое значение истинным. Ошибка возникает если значение ложно.
Assert.IsFalse
Проверяет, является ли передаваемое значение ложным. Ошибка возникает если значение истинно.
Assert.IsNull
Проверяет, является ли передаваемое значение null. Ошибка возникает, если значение не null.
Assert.IsNotNull
Проверяет, чтобы передаваемое значение не было null. Ошибка возникает, если передаваемое значение null.
Assert.IsInstanceOfType
Проверяет, является ли передаваемый объект экземпляром заданного класса. Ошибка возникает, если значение не является экземпляром заданного типа.
Assert.IsNotInstanceOfType
Проверяет, чтобы передаваемый объект не являлся экземпляром заданного класса. Ошибка возникает, если объект является экземпляром заданного класса.