Проверка платформы
Чтобы упростить написание тестов, TAEF предоставляет платформу Verify, которая использует преимущества WexLogger для создания отчетов по подробным журналам с минимальным объемом кода. Платформа Проверки помогает тестам предоставлять структурированные выходные данные журнала. Она выводит журнал успешного выполнения, если заданная проверка успешно завершена, и выводит подробные сведения в случае сбоя проверки.
Использование проверки из C++
API Проверки предоставляется в C++ в виде набора макросов, определенных в файле заголовка Verify.h (Примечание. Не нужно явно включать Verify.h. Следует включить "WexTestClass.h", который содержит все необходимое для маркировки тестов C++ и взаимодействия с API Verify и WexLogger).
Для собственных тестов C++ доступны следующие макросы Проверки:
Макрос | Функциональность |
---|---|
VERIFY_ARE_EQUAL(ожидаемое, фактическое, [необязательное сообщение]) | Проверяет равенство двух указанных объектов. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_ARE_NOT_EQUAL(ожидаемое, фактическое, [необязательное сообщение]) | Проверяет, что два указанных объекта не равны. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_IS_GREATER_THAN(expectedGreater, expectedLess, [необязательное сообщение]) | Проверяет, что первый параметр больше второго. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_IS_GREATER_THAN_OR_EQUAL(expectedGreater, expectedLess, [необязательное сообщение]) | Проверяет, что первый параметр больше или равен второму параметру. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_IS_LESS_THAN(expectedLess, expectedGreater, [необязательное сообщение]) | Проверяет, что первый параметр меньше второго. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_IS_LESS_THAN_OR_EQUAL(expectedLess, expectedGreater, [необязательное сообщение]) | Проверяет, что первый параметр меньше или равен второму параметру. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_ARE_SAME(ожидаемое, фактическое, [необязательное сообщение]) | Проверяет, относятся ли два указанных параметра к одному и тому же объекту. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_ARE_NOT_SAME(ожидаемый, фактический; [необязательное сообщение]) | Проверяет, что два указанных параметра не относятся к одному и тому же объекту. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_FAIL ([необязательное сообщение]) | Завершается сбоем без проверки каких-либо условий. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_IS_TRUE(условие, [необязательное сообщение]) | Проверяет, имеет ли указанный логическое значение true. Позвоните VERIFY_IS_TRUE(!! __condition) или VERIFY_WIN32_BOOL_SUCCEEDED (__condition), чтобы протестировать логическое значение Win32. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_IS_FALSE(условие, [необязательное сообщение]) | Проверяет, имеет ли указанный логическое значение false. Позвоните VERIFY_IS_FALSE(!! __condition) или VERIFY_WIN32_BOOL_FAILED (__condition) для тестирования ЛОГИЧЕСКОЕ ЗНАЧЕНИЕ Win32. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_IS_NULL(объект; [необязательное сообщение]) | Проверяет, имеет ли указанный параметр значение NULL. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_IS_NOT_NULL(object, [необязательное сообщение]) | Проверяет, что указанный параметр не имеет значения NULL. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_SUCCEEDED(hresult, [необязательное сообщение]) | Проверяет успешное выполнение указанного HRESULT. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_SUCCEEDED_RETURN(hresult, [необязательное сообщение]) | Проверяет успешное выполнение указанного HRESULT и возвращает HRESULT, переданный в макрос. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_FAILED(hresult, [необязательное сообщение]) | Проверяет, не выполнен ли указанный HRESULT. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_FAILED_RETURN(hresult, [необязательное сообщение]) | Проверяет, что указанный HRESULT не выполнен успешно, и возвращает HRESULT, переданный в макрос. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_THROWS(операция, исключение, [необязательное сообщение]) | Проверяет, вызывает ли указанная операция заданный тип исключения. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_NO_THROW(операция, [необязательное сообщение]) | Проверяет, не вызывает ли указанная операция исключение. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_WIN32_SUCCEEDED(win32Result, [необязательное сообщение]) | Проверяет, успешно ли выполнен указанный результат Win32. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_WIN32_SUCCEEDED_RETURN(win32Result, [необязательное сообщение]) | Проверяет успешность указанного результата Win32 и возвращает значение LONG, переданное в макрос. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_WIN32_FAILED(win32Result, [необязательное сообщение]) | Проверяет, не удалось ли выполнить указанный результат Win32. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_WIN32_FAILED_RETURN(win32Result, [необязательное сообщение]) | Проверяет, что указанный результат Win32 завершился сбоем, и возвращает значение LONG, переданное в макрос. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_WIN32_BOOL_SUCCEEDED(win32Bool, [необязательное сообщение]) | Проверяет, успешно ли выполнен указанный логическое значение Win32 (!= FALSE). Регистрирует результат GetLastError() в случае сбоя проверки. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_WIN32_BOOL_SUCCEEDED_RETURN(win32Bool, [необязательное сообщение]) | Проверяет, успешно ли выполнен указанный логический код Win32 (!= FALSE), и возвращает значение BOOL, переданное в макрос. Регистрирует результат GetLastError() в случае сбоя проверки. Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_WIN32_BOOL_FAILED(win32Bool, [необязательное сообщение]) | Проверяет, не удалось ли выполнить указанный boOL Win32 (== FALSE). Не регистрирует результат GetLastError(). Кроме того, регистрирует пользовательское сообщение, если оно указано. |
VERIFY_WIN32_BOOL_FAILED_RETURN(win32Bool, [необязательное сообщение]) | Проверяет, что указанный логический код Win32 завершился сбоем (== FALSE), и возвращает значение BOOL, переданное в макрос. Не регистрирует результат GetLastError(). Кроме того, регистрирует пользовательское сообщение, если оно указано. |
Проверка использования на основе исключений
Если исходный код компилируется с включенными исключениями C++ (путем указания параметра командной строки "/EHsc" или макроса "USE_NATIVE_EH=1" в исходном файле), макросы Verify по умолчанию регистрируют ошибку при сбое, после чего создается собственное исключение C++. Возникает исключение WEX::TestExecution::VerifyFailureException. Вам не нужно перехватывать это исключение— платформа TAEF перехватит его и перейдет к следующему тестовом варианту.
При необходимости, если вы хотите выполнить ряд проверок в строке вместо прерывания теста при первом сбое проверки, можно использовать класс DisableVerifyExceptions . Время существования объекта управляет временем отключения исключений.
if (NULL != m_key)
{
DisableVerifyExceptions disable;
VERIFY_WIN32_SUCCEEDED(::RegDeleteKey(HKEY_CURRENT_USER, zTempName));
VERIFY_WIN32_SUCCEEDED(::RegCloseKey(m_key));
}
В приведенном выше примере исключения отключены только в блоке if (NULL != m_key). Если первый вызов проверки завершается ошибкой, то второй вызов проверки по-прежнему выполняется.
Класс DisableVerifyExceptions подсчитывается по ссылке, а также работает для каждого потока.
Проверка использования, не основанного на исключениях
Если исходный код не компилируется с включенными исключениями C++, макросы Verify не будут выдавать собственный код C++ при сбое проверки. Кроме того, если исходный код компилируется с включенными исключениями C++, но вы хотите отключить проверку исключений, просто #define NO_VERIFY_EXCEPTIONS перед включением "WexTestClass.h".
В этой модели необходимо выполнить ряд вложенных операторов if, чтобы управлять потоком тестового случая, а не полагаться на исключения C++.
if (VERIFY_WIN32_SUCCEEDED(::RegDeleteKey(HKEY_CURRENT_USER, zTempName)))
{
...
}
Проверка параметров вывода
Если вы хотите настроить выходные данные, созданные API проверки, можно использовать класс SetVerifyOutput . Время существования объекта управляет временем установки выходных параметров. Класс SetVerifyOutput подсчитывается по ссылке и функционирует для каждого потока.
if (NULL != m_key)
{
SetVerifyOutput verifySettings(VerifyOutputSettings::LogOnlyFailures);
VERIFY_IS_TRUE(true, L"Should NOT log a comment");
VERIFY_IS_TRUE(false, L"Should log an error");
}
VERIFY_IS_TRUE(true, L"Should log a comment");
В приведенном выше примере указанные параметры относятся только к вызовам, выполненным в блоке "if (NULL != m_key)", и регистрируется только вызов проверки, который завершается сбоем. Однако третий вызов проверки будет зарегистрирован, даже если он будет выполнен успешно. Это связано с тем, что класс SetVerifyOutput вышел из область.
Для настройки выходных данных проверки существуют следующие параметры:
VerifyOutputSettings::LogOnlyFailures
Регистрируются только неудачные вызовы проверки; все успешные вызовы игнорируются.
VerifyOutputSettings::LogFailuresAsBlocked
Регистрируют все сбои как заблокированные, а не регистрируют ошибку.
VerifyOutputSettings::LogFailuresAsWarnings
Регистрируют все сбои как предупреждения, а не регистрируют ошибки.
VerifyOutputSettings::LogValuesOnSuccess
Регистрировать значения переданных параметров, даже если вызов Verify выполнен успешно.
Убедитесь, что выходные параметры могут быть или вместе, чтобы включить несколько параметров:
SetVerifyOutput verifySettings(VerifyOutputSettings::LogOnlyFailures | VerifyOutputSettings::LogFailuresAsBlocked);
Предоставление выходных данных значения для пользовательских типов
Платформа проверки C++ позволяет создавать подробные выходные данные для любого пользовательского типа. Для этого необходимо реализовать специализацию шаблона класса WEX::TestExecution::VerifyOutputTraits .
Специализация шаблона класса WEX::TestExecution::VerifyOutputTraits должна существовать в пространстве имен WEX::TestExecution . Он также должен предоставить открытый статический метод с именем ToString, который принимает ссылку на класс и возвращает WEX::Common::NoThrowString , содержащий строковое представление его значения.
class MyClass
{
public:
MyClass(int value)
: m_myValue(value)
{
}
int GetValue()
{
return m_myValue;
}
private:
int m_myValue;
}
namespace WEX { namespace TestExecution
{
template <>
class VerifyOutputTraits<MyClass>
{
public:
static WEX::Common::NoThrowString ToString(const MyClass& myClass)
{
return WEX::Common::NoThrowString().Format(L"%d", myClass.GetValue());
}
};
}}
Предоставление компараторов для пользовательских типов
Платформа проверки C++ предоставляет возможность определять компараторы для пользовательских типов, которые не реализуют соответствующие перегрузки операторов (operator=, operator< и т. д.). Для этого необходимо реализовать специализацию шаблона класса WEX::TestExecution::VerifyCompareTraits .
Специализация шаблона класса WEX::TestExecution::VerifyCompareTraits должна существовать в пространстве имен WEX::TestExecution . Кроме того, ожидается, что будут предоставлены общедоступные статические методы AreEqual, AreSame, IsLessThan, IsGreaterThan и IsNull.
class MyClass
{
public:
MyClass(int value)
: m_myValue(value)
{
}
int GetValue()
{
return m_myValue;
}
private:
int m_myValue;
}
namespace WEX { namespace TestExecution
{
template <>
class VerifyCompareTraits<MyClass, MyClass>
{
public:
static bool AreEqual(const MyClass& expected, const MyClass& actual)
{
return expected.GetValue() == actual.GetValue();
}
static bool AreSame(const MyClass& expected, const MyClass& actual)
{
return &expected == &actual;
}
static bool IsLessThan(const MyClass& expectedLess, const MyClass& expectedGreater)
{
return (expectedLess.GetValue() < expectedGreater.GetValue());
}
static bool IsGreaterThan(const MyClass& expectedGreater, const MyClass& expectedLess)
{
return (expectedGreater.GetValue() > expectedLess.GetValue());
}
static bool IsNull(const MyClass& object)
{
return object.GetValue() == 0;
}
};
}}
Использование проверки из C #
Использование C# Verify аналогично использованию C++. Однако он предоставляется через WEX. Класс TestExecution.Verify , расположенный в Te.Managed.dll.
Для тестов C# доступны следующие методы Проверки:
Макрос | Функциональность |
---|---|
AreEqual(object expected, object actual) | Проверяет, равны ли два указанных объекта. |
AreEqual(object expected, object actual, string message) | Проверяет, что два указанных объекта равны; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
AreEqual<T>(T expected, T actual) | Проверяет, равны ли два указанных объекта. |
AreEqual<T>(T expected, T actual, string message) | Проверяет, что два указанных объекта равны; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
AreNotEqual(object expected, object actual) | Проверяет, что два указанных объекта не равны. |
AreNotEqual(object expected, object actual, string message) | Проверяет, что два указанных объекта не равны; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
AreNotEqual<T>(T expected, T actual) | Проверяет, что два указанных объекта не равны. |
AreNotEqual<T>(T expected, T actual, string message) | Проверяет, что два указанных объекта не равны; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
AreSame(объект ожидается, объект фактический) | Проверяет, ссылаются ли два указанных параметра на один и тот же объект. |
AreSame(object expected, object actual, string message) | Проверяет, ссылаются ли два указанных параметра на один и тот же объект; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
AreNotSame(объект ожидается, объект фактический) | Проверяет, что два указанных параметра не ссылаются на один и тот же объект. |
AreNotSame(object expected, object actual, string message) | Проверяет, что два указанных параметра не ссылаются на один и тот же объект; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
IsGreaterThan(IComparable expectedGreater, IComparable expectedLess) | Проверяет, что первый параметр больше второго. |
IsGreaterThan(IComparable expectedGreater, IComparable expectedLess, string message) | Проверяет, что первый параметр больше второго; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
IsGreaterThanOrEqual(IComparable expectedGreater, IComparable expectedLess) | Проверяет, что первый параметр больше или равен второму параметру. |
IsGreaterThanOrEqual(IComparable expectedGreater, IComparable expectedLess, string message) | Проверяет, что первый параметр больше или равен второму параметру; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
IsLessThan(IComparable expectedLess, IComparable expectedGreater) | Проверяет, что первый параметр меньше второго. |
IsLessThan(IComparable expectedLess, IComparable expectedGreater, string message) | Проверяет, что первый параметр меньше второго; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
IsLessThanOrEqual(IComparable expectedLess, IComparable expectedGreater) | Проверяет, что первый параметр меньше или равен второму параметру. |
IsLessThanOrEqual(IComparable expectedLess, IComparable expectedGreater, string message) | Проверяет, что первый параметр меньше или равен второму параметру; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
Fail(string message) | Завершается сбоем без проверки каких-либо условий. |
IsTrue(bool condition) | Проверяет, верно ли указанное условие. |
IsTrue(bool condition, string message) | Проверяет, является ли указанное условие истинным; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
IsFalse(bool condition) | Проверяет, имеет ли указанное условие значение false. |
IsFalse(bool condition, string message) | Проверяет, имеет ли указанное условие значение false; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
IsNull(object obj) | Проверяет, имеет ли указанный параметр значение NULL. |
IsNull(object obj, string message) | Проверяет, имеет ли указанный параметр значение NULL; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
IsNotNull(object obj) | Проверяет, что указанный параметр не равен NULL. |
IsNotNull(object obj, string message) | Проверяет, не имеет ли указанный параметр значение NULL; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
Вызывает T<>(операцию VerifyOperation) | Проверяет, что указанная операция создает исключение заданного типа. Также возвращает исключение для дальнейшей проверки. |
<Вызывает T>(операция VerifyOperation, строковое сообщение) | Проверяет, вызывает ли указанная операция заданный тип исключения; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. Также возвращает исключение для дальнейшей проверки. |
NoThrow(VerifyOperation operation) | Проверяет, не вызывает ли указанная операция исключение. |
NoThrow(VerifyOperation operation, string message) | Проверяет, не вызывает ли указанная операция исключение; регистрирует пользовательское сообщение об успешном или неудачном выполнении проверки. |
Проверка использования на основе исключений
При сбое проверки в тестовых случаях C# в средство ведения журнала и WEX записывается ошибка . Возникает исключение TestExecution.VerifyFailureException . Как и в собственной модели C++, вам не нужно беспокоиться о перехвате этих исключений. Платформа TAEF перехватит ее и перейдет к следующему тестовой ситуации.
При необходимости, если вы хотите выполнить ряд проверок в строке вместо прерывания теста при первом сбое проверки, можно использовать класс DisableVerifyExceptions . Время существования объекта управляет временем отключения исключений. Класс DisableVerifyExceptions подсчитывается по ссылке и работает для каждого потока.
using (new DisableVerifyExceptions())
{
Verify.AreSame(item1, item2);
Verify.AreEqual(item1, item2);
}
В приведенном выше примере, если первый вызов проверки завершается ошибкой, второй вызов проверки по-прежнему выполняется.
Кроме того, можно добиться того же результата, установив параметр Verify.DisableVerifyExceptions = true перед операциями Verify, как показано ниже.
Verify.DisableVerifyExceptions = true;
try
{
Verify.AreSame(item1, item2);
Verify.AreEqual(item1, item2);
}
finally
{
Verify.DisableVerifyExceptions = false;
}
Обратите внимание, что хотя такой параметр доступен, объявление DisableVerifyExeptions в качестве объекта в блоке using по-прежнему является рекомендуемым вариантом.
Если вы хотите остановиться в отладчике при возникновении ошибки проверки, откроется диалоговое окно исключений (CTRL+ALT+E), нажмите кнопку Добавить, выберите "Исключения среды CLR" в раскрывающемся списке и введите "WEX. TestExecution.VerifyFailureException" в поле Имя.
Проверка параметров вывода
Если вы хотите настроить выходные данные, созданные API проверки, можно использовать класс SetVerifyOutput . Время существования объекта управляет временем установки выходных параметров. Класс SetVerifyOutput подсчитывается по ссылке и функционирует для каждого потока.
using (new SetVerifyOutput(VerifyOutputSettings.LogOnlyFailures))
{
Log.Comment("Only the following error should be logged:");
Verify.IsTrue(true, "Should NOT log a comment");
Verify.IsTrue(false, "Should log an error");
}
Verify.IsTrue(true, "Should log a comment");
В приведенном выше примере следует регистрировать только второй вызов проверки, так как это единственный вызов, который завершается ошибкой в блоке using. Однако третий вызов проверки будет зарегистрирован, даже если он будет выполнен успешно. Это связано с тем, что класс SetVerifyOutput вышел из область.
Кроме того, можно добиться того же результата, установив параметр Verify.OutputSettings = VerifyOutputSettings.LogOnlyFailures перед операциями Verify, как показано ниже.
Verify.OutputSettings = VerifyOutputSettings.LogFailuresAsWarnings
try
{
Verify.AreSame(item1, item2);
Verify.AreEqual(item1, item2);
}
finally
{
Verify.OutputSettings = VerifyOutputSettings.None;
}
Обратите внимание, что, хотя такой параметр доступен, объявление SetVerifyOutput в качестве объекта в блоке using по-прежнему является рекомендуемым вариантом.
Для настройки выходных данных проверки существуют следующие параметры:
VerifyOutputSettings.LogOnlyFailures
Регистрируются только неудачные вызовы проверки; все успешные вызовы игнорируются.
VerifyOutputSettings.LogFailuresAsBlocked
Регистрируют все сбои как заблокированные, а не регистрируют ошибку.
VerifyOutputSettings.LogFailuresAsWarnings
Регистрируют все сбои как предупреждения, а не регистрируют ошибки.
Убедитесь, что выходные параметры могут быть или вместе, чтобы включить несколько параметров:
using (new SetVerifyOutput(VerifyOutputSettings.LogFailuresAsBlocked | VerifyOutputSettings.LogOnlyFailures))
{
...
}
Использование проверки из скрипта
API проверки также доступен для языков сценариев, следуя тем же шаблонам использования, что и C++ и C#.
Установки
При использовании api проверки с поддержкой скриптов в методе теста TAEF установка не требуется— необходимые API регистрируются с помощью com-сервера "Бесплатная регистрация". Чтобы использовать скриптируемый API извне метода теста TAEF (за пределами TAEF или в дочернем процессе), просто зарегистрируйте двоичный файл Te.Common.dll с помощью regsvr32 из командной строки с повышенными привилегиями; Например:
regsvr32 Te.Common.dll
При развертывании TAEF с помощью файла развертывания для выполнения лаборатории Te.Common.dll регистрируется автоматически.
Использование
Api проверки, доступные для сценариев, отображаются через "TE. COM-класс Common.Verify — просто создайте экземпляр этого класса и вызовите в нем методы. Класс Verify будет автоматически работать с WEXLogger для записи проверок pass и fail в журнал.
1 <?xml version="1.0" ?>
2 <?component error="false" debug="false"?>
3 <package>
4 <component id="Example">
5 <object id="Log" progid="Wex.Logger.Log" />
6 <object id="Verify" progid="Te.Common.Verify" />
7 <reference guid="e65ef678-a232-42a7-8a36-63108d719f31" version="1.0"/>
8 <reference guid="f8bb9db9-e54e-4555-b3e5-e3ddf2fef401" version="1.0"/>
9
10 <public>
11 <method name="HelloWorld"/>
12 </public>
13
14 <script language="JScript">
15 function HelloWorld() {
16 Verify.IsTrue(true);
17 Verify.IsFalse(false);
18 }
19 </script>
20 </component>
21 </package>
В этом примере определяется тестовый класс скрипта TAEF с одним методом HelloWorld. В строке 6 элемент object используется для определения переменной Verify в глобальном область. В строке 8 элемент reference используется для включения всех констант из указанной библиотеки типов (в данном случае Te.Common.dll библиотеки типов) в глобальный область скрипта; в этом случае добавляются константы VerifySettings. В строках 16 и 17 показано простое использование API проверки. При выполнении примера будут выведены следующие выходные данные:
Test Authoring and Execution Framework v2.7 Build 6.2.7922.0 (fbl_esc_end_dev(mschofie).110202-1000) For x86
StartGroup: Example::HelloWorld
Verify: IsTrue
Verify: IsFalse
EndGroup: Example::HelloWorld [Passed]
Summary: Total=1, Passed=1, Failed=0, Blocked=0, Not Run=0, Skipped=0
API проверки с помощью скриптов
Ниже приведены методы проверки в API проверки с помощью скриптов.
Метод | Функциональность |
---|---|
bool Verify.AreEqual(expected, actual, [optional message]) | Проверяет равенство двух значений. Если параметр "VerifySettings_CoerceTypes" включен, этот метод использует определение равенства JScript. Если параметр "VerifySettings_CoerceTypes" не включен, метод использует определение идентификатора JScript. По умолчанию параметр "VerifySettings_CoerceTypes" включен. |
bool Verify.AreNotEqual(expected, actual, [optional message]) | Проверяет, что два значения не равны. Если параметр "VerifySettings_CoerceTypes" включен, этот метод использует определение равенства JScript. Если параметр "VerifySettings_CoerceTypes" не включен, метод использует определение идентификатора JScript. По умолчанию параметр "VerifySettings_CoerceTypes" включен. |
bool Verify.IsGreaterThan(expectedGreater, expectedLess, [необязательное сообщение]) | Проверяет, что первое значение больше второго. |
bool Verify.IsGreaterThanOrEqual(expectedGreater, expectedLess, [необязательное сообщение]) | Проверяет, что первое значение больше или равно второму. |
bool Verify.IsLessThan(expectedLess, expectedGreater, [необязательное сообщение]) | Проверяет, что первое значение меньше второго. |
bool Verify.IsLessThanOrEqual(expectedLess, expectedGreater, [необязательное сообщение]) | Проверяет, что первое значение меньше или равно второму. |
bool Verify.AreSame(expected, actual, [optional message]) | Проверяет, совпадают ли значения. |
bool Verify.AreNotSame(expected, actual, [optional message]) | Проверяет, не совпадают ли значения. |
bool Verify.Fail([необязательное сообщение]) | Сбой без проверки условий. |
bool Verify.IsTrue(expression, [optional message]) | Проверяет, имеет ли данное выражение значение true. |
bool Verify.IsFalse(expression, [optional message]) | Проверяет, имеет ли данное выражение значение false. |
bool Verify.IsNull(expected, [optional message]) | Проверяет, имеет ли данное значение значение null. |
bool Verify.IsNotNull(expected, [optional message]) | Проверяет, не равно ли заданное значение null. |
bool Verify.Throws(function, [optional message]) | Проверяет, вызывает ли данная функция исключение и . |
bool Verify.NoThrow(function, [optional message]) | Проверяет, что данная функция не создает исключение и . |
Существует два метода в классе Verify для управления параметрами:
Метод | Функциональность |
---|---|
object Verify.EnableSettings(settings) | Указанный флаг параметра или флаги будут включены. |
object Verify.DisableSettings(settings) | Указанный флаг параметра или флаги будут отключены. |
Значение параметров, передаваемое в методы Verify.EnableSettings или Verify.DisableSettings, может иметь любое из следующих значений:
VerifySettings_LogOnlyFailures = 0x01
Регистрируются только сбои— нет выходных данных для успешных вызовов Проверки.
VerifySettings_LogFailuresAsBlocked = 0x02
Сбои регистрируются как "Заблокировано" вместо ошибки по умолчанию.
VerifySettings_LogFailuresAsWarnings = 0x04
Ошибки регистрируются как "Предупреждение" вместо ошибки по умолчанию.
VerifySettings_LogValuesOnSuccess = 0x08
Значения проверяемых параметров записываются как часть сообщения Проверка журнала. Этот параметр включен по умолчанию.
VerifySettings_CoerceTypes = 0x1000
Значения, передаваемые в методы Verify, будут приведены в соответствие с правилами приведения JScript. Этот параметр включен по умолчанию.
VerifySettings_DisableExceptions = 0x2000
Исключения не будут создаваться при сбое проверки.
Проверка параметров
API проверки предоставляет параметры для настройки его поведения. Методы EnableSettings и DisableSettings можно использовать для включения или отключения определенных параметров, которые поддерживает класс Verify. Эти методы принимают один или несколько параметров для включения или отключения.
Verify.EnableSettings(VerifySettings_LogOnlyFailures);
Чтобы включить или отключить несколько параметров в одном вызове, можно включить несколько флагов VerifySettings:
Verify.EnableSettings(VerifySettings_LogOnlyFailures | VerifySettings_DisableExceptions);
Методы EnableSettings и DisableSettings возвращают объект , который можно использовать для восстановления исходных параметров, позволяя включать или отключать параметры для заданного область;
1 var guard = Verify.EnableSettings(VerifySettings_LogOnlyFailures);
2 try
3 {
4 Verify.AreEqual(10, 0xa);
5 }
6 finally
7 {
8 guard.Restore();
9 }
В этом примере метод Verify.EnableSettings передается "VerifySettings_LogOnlyFailures", который будет включен в параметры, которые уже присутствуют в объекте Verify. Вызов Verify выполняется в блоке try-finally, чтобы во время блока finally можно было использовать объект guard для восстановления исходных параметров.
Проверка использования на основе исключений
По умолчанию методы Verify создают исключение при сбое проверки. При выполнении в TAEF, если исключение создается из метода теста, тест завершится ошибкой. Пример:
1 var guard = Verify.EnableSettings(VerifySettings_CoerceTypes);
2 try
3 {
4 Verify.AreEqual(1, "1");
5 Verify.AreEqual("1", 1);
6 }
7 finally
8 {
9 guard.Restore();
10 }
В этом примере второй вызов Verify никогда не будет выполнен, так как первый вызов вызовет исключение и завершится неудачей теста. Для изменения этого поведения можно использовать поддержку параметров в API проверки, чтобы не выдавать неудачные проверки, что позволит выполнять последующие вызовы Проверки. Это особенно полезно для проверки набора параметров и записи всех проверок.
1 var guard = Verify.EnableSettings(VerifySettings_CoerceTypes | VerifySettings_DisableExceptions);
2 try
3 {
4 Verify.AreEqual(1, "1");
5 Verify.AreEqual("1", 1);
6 }
7 finally
8 {
9 guard.Restore();
10 }
Так как исключения были отключены, обе проверки будут записаны в журнал.
Использование API проверки с поддержкой скриптов за пределами TAEF
Api проверки с поддержкой скриптов можно использовать за пределами TAEF. Убедитесь, что Te.Common.dll зарегистрирована, как указано в разделе Установка, и просто создайте TE. Класс Common.Verify".
var VerifySettings_DisableExceptions = 0x2000;
var Verify = new ActiveXObject("TE.Common.Verify");
var Log = new ActiveXObject("WEX.Logger.Log");
Verify.EnableSettings(VerifySettings_DisableExceptions);
Log.StartGroup("Group A");
Verify.AreEqual(1, 2);
Log.EndGroup("Group A");
Log.StartGroup("Group B");
Verify.AreEqual(2, 2);
Log.EndGroup("Group B");
Приведенный выше код создает следующие выходные данные консоли при выполнении с помощью cscript:
StartGroup: Group A
Error: Verify: AreEqual - Values (1, 2)
EndGroup: Group A [Failed]
StartGroup: Group B
Verify: AreEqual - Values (2, 2)
EndGroup: Group B [Passed]
Non-passing Tests:
Group A [Failed]
Summary: Total=2, Passed=1, Failed=1, Blocked=0, Not Run=0, Skipped=0
Wex. API Logger.Log можно использовать для настройки средства ведения журнала WEX по мере необходимости (например, в качестве дочернего процесса), и скриптируемый API проверки воспользуется этой конфигурацией.