Korzystanie z Microsoft.VisualStudio.TestTools.CppUnitTestFramework
Ten temat zawiera listę publicznych elementów członkowskich przestrzeni nazw Microsoft::VisualStudio::CppUnitTestFramework.
Pliki nagłówków znajdują się w folderze VisualStudio2012[x86]InstallFolder**\VC\UnitTest\include**.
Pliki lib znajdują się w folderze VisualStudio2012[x86]InstallFolder**\VC\UnitTest\lib**.
W tym temacie
CppUnitTest.h
Tworzenie klas i metod testowych
Inicjowanie i oczyszczanie
Metody testowe
Klasy testowe
Moduły testowe
Tworzenie atrybutów testowych
Atrybuty metody testowej
Atrybuty klasy testowej
Atrybuty modułów testowych
Wstępnie zdefiniowane atrybuty
CppUnitTestAssert.h
Potwierdzenia ogólne
Są równe
Nie są równe
Są tym samym
Nie są tym samym
Ma wartość null
Nie jest wartością null
Jest prawdą
Jest fałszem
Zakończ niepowodzeniem
Potwierdzenia środowiska wykonawczego systemu Windows
Są równe
Są tym samym
Nie są równe
Nie są tym samym
Ma wartość null
Nie jest wartością null
Potwierdzenia wyjątków
- Oczekiwany wyjątek
CppUnitTestLogger.h
Rejestrator
Zapisz wiadomość
CppUnitTest.h
Tworzenie klas i metod testowych
TEST_CLASS(className)
Wymagane dla każdej klasy zawierającej metody testowe.Identyfikuje className jako klasę testową.TEST_CLASS musi być zadeklarowana w zakresie obszaru nazw.
TEST_METHOD(methodName)
{
// test method body
}
Definiuje methodName jako metodę testową.TEST_METHOD musi być zadeklarowana w zakresie klasy metody.
Inicjowanie i oczyszczanie
Metody testowe
TEST_METHOD_INITIALIZE(methodName)
{
// method initialization code
}
Definiuje methodName jako metodę, która jest uruchamiana przed uruchomieniem każdej metody testowej.TEST_METHOD_INITIALIZE można zdefiniować tylko raz w klasie testowej i musi być zdefiniowana w klasie testowej.
TEST_METHOD_CLEANUP(methodName)
{
// test method cleanup code
}
Definiuje methodName jako metodę, która jest uruchamiana po każdej metodzie testowej.TEST_METHOD_CLEANUP można zdefiniować tylko raz w klasie testowej i musi być zdefiniowana w zakresie klasy testowej.
Klasy testowe
TEST_CLASS_INITIALIZE(methodName)
{
// test class initialization code
}
Definiuje methodName jako metodę, która jest uruchamiana po utworzeniu każdej klasy testowej.TEST_CLASS_INITIALIZE można zdefiniować tylko raz w klasie testowej i musi być zdefiniowana w zakresie klasy testowej.
TEST_CLASS_CLEANUP(methodName)
{
// test class cleanup code
}
Definiuje methodName jako metodę, która jest uruchamiana po utworzeniu każdej klasy testowej.TEST_CLASS_CLEANUP można zdefiniować tylko raz w klasie testowej i musi być zdefiniowana w zakresie klasy testowej.
Moduły testowe
TEST_MODULE_INITIALIZE(methodName)
{
// module initialization code
}
Definiuje metodę methodName, która jest uruchamiana, gdy moduł jest załadowany.TEST_MODULE_INITIALIZE można zdefiniować tylko raz w module testowym i musi być zadeklarowana w zakresie przestrzeni nazw.
TEST_MODULE_CLEANUP(methodName)
Definiuje metodę methodName, która jest uruchamiana, gdy moduł zostanie zwolniony.TEST_MODULE_CLEANUP można zdefiniować tylko raz w module testowym i musi być zadeklarowana w zakresie przestrzeni nazw.
Tworzenie atrybutów testowych
Atrybuty metody testowej
BEGIN_TEST_METHOD_ATTRIBUTE(testMethodName)
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_METHOD_ATTRIBUTE()
Dodaje atrybuty zdefiniowane z jednym lub wieloma makrami TEST_METHOD_ATTRIBUTE do metody testowej testClassName.
Makro TEST_METHOD_ATTRIBUTE określa atrybut o nazwie attributeName i wartość attributeValue.
Atrybuty klasy testowej
BEGIN_TEST_CLASS_ATTRIBUTE(testClassName)
TEST_CLASS_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_CLASS_ATTRIBUTE()
Dodaje atrybuty zdefiniowane z jednym lub wieloma makrami TEST_CLASS_ATTRIBUTE do klasy testowej testClassName.
Makro TEST_CLASS_ATTRIBUTE określa atrybut o nazwie attributeName i wartość attributeValue.
Atrybuty modułów testowych
BEGIN_TEST_MODULE_ATTRIBUTE(testModuleName)
TEST_MODULE_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_MODULE_ATTRIBUTE()
Dodaje atrybuty zdefiniowane z jednym lub wieloma makrami TEST_MODULE_ATTRIBUTE do modułu testowego testModuleName.
Makro TEST_MODULE_ATTRIBUTE określa atrybut o nazwie attributeName i wartość attributeValue.
Wstępnie zdefiniowane atrybuty
Makra atrybutów predefiniowanych mogą zastąpić makra TEST_METHOD_ATTRIBUTE, TEST_CLASS_ATTRIBUTE, lub TEST_MODULE_ATTRIBUTE opisane powyżej.
TEST_OWNER(ownerAlias)
Określa atrybut o nazwie Owner i wartość atrybutu ownerAlias.
TEST_DESCRIPTION(description)
Określa atrybut o nazwie Description i wartość atrybutu description.
TEST_PRIORITY(priority)
Określa atrybut o nazwie Priority i wartość atrybutu priority.
TEST_WORKITEM(workitem)
Określa atrybut o nazwie WorkItem i wartość atrybutu workItem.
TEST_IGNORE()
Określa atrybut o nazwie Ignore i wartość atrybutu true.
CppUnitTestAssert.h
Potwierdzenia ogólne
Są równe
Sprawdź, czy dwa obiekty są równe
template<typename T>
static void AreEqual(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sprawdź, czy dwie wartości double są równe
static void AreEqual(
double expected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sprawdź, czy dwie wartości float są równe
static void AreEqual(
float expected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sprawdź, czy dwa ciągi znaków char* są równe
static void AreEqual(
const char* expected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sprawdź, czy dwa ciągi znaków w_char* są równe
static void AreEqual(
const wchar_t* expected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Nie są równe
Sprawdź, czy dwie wartości double nie są równe
static void AreNotEqual(
double notExpected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sprawdź, czy dwie wartości float nie są równe
static void AreNotEqual(
float notExpected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sprawdź, czy dwa ciągi znaków char* nie są równe
static void AreNotEqual(
const char* notExpected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sprawdź, czy dwa ciągi znaków w_char* nie są równe
static void AreNotEqual(
const wchar_t* notExpected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sprawdź, czy dwa odwołania nie są równe, na podstawie operator==.
template<typename T>
static void AreNotEqual(
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Są tym samym
Zweryfikuj, czy dwa odwołania odnoszą się do tego samego wystąpienia obiektu (tożsamość).
template<typename T>
static void AreSame(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Nie są tym samym
Zweryfikuj, czy dwa odwołania nie odnoszą się do tego samego wystąpienia obiektu (tożsamość).
template<typename T>
static void AreNotSame (
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Ma wartość null
Sprawdź, czy wskaźnik jest NULL.
template<typename T>
static void IsNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Nie jest wartością null
Sprawdź, czy wskaźnik nie jest NULL
template<typename T>
static void IsNotNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Jest prawdą
Sprawdź, czy warunek jest spełniony
static void IsTrue(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Jest fałszem
Sprawdź, czy warunek jest fałszywy
static void IsFalse(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Zakończ niepowodzeniem
Zmusza do zakończenia przypadku testowego niepowodzeniem
static void Fail(
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Potwierdzenia środowiska wykonawczego systemu Windows
Są równe
Weryfikuje, czy dwa wskaźniki środowiska wykonawczego systemu Windows są równe.
template<typename T>
static void AreEqual(
T^ expected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Weryfikuje, czy dwa ciągi znaków Platform::String^ są równe.
template<typename T>
static void AreEqual(
T^ expected,
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Są tym samym
Weryfikuje, czy dwa odwołania środowiska wykonawczego systemu Windows odwołują się do tego samego obiektu.
template<typename T>
static void AreSame(
T% expected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Nie są równe
Weryfikuje, czy dwa wskaźniki środowiska wykonawczego systemu Windows nie są równe.
template<typename T>
static void AreNotEqual(
T^ notExpected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Weryfikuje, czy dwa ciągi znaków Platform::String^ nie są równe.
static void AreNotEqual(
Platform::String^ notExpected,
Platform::String^ actual,
bool ignoreCase = false,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Nie są tym samym
Weryfikuje, czy dwa odwołania środowiska wykonawczego systemu Windows odwołują się do tego samego obiektu.
template<typename T>
static void AreNotSame(
T% notExpected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Ma wartość null
Weryfikuje, czy wskaźnik środowiska wykonawczego systemu Windows jest nullptr.
template<typename T>
static void IsNull(
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Nie jest wartością null
Weryfikuje, czy wskaźnik środowiska wykonawczego systemu Windows nie jest nullptr.
template<typename T>
static void IsNotNull(
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Potwierdzenia wyjątków
Oczekiwany wyjątek
Zweryfikuj, że funkcja wywołuje wyjątek:
template<typename _EXPECTEDEXCEPTION, typename _FUNCTOR>
static void ExpectException(
_FUNCTOR functor,
const wchar_t* message= NULL,
const __LineInfo* pLineInfo= NULL)
Zweryfikuj, że funkcja wywołuje wyjątek:
template<typename _EXPECTEDEXCEPTION, typename _RETURNTYPE>
static void ExpectException(
_RETURNTYPE (*func)(),
const wchar_t* message= NULL,
const __LineInfo* pLineInfo = NULL)
CppUnitTestLogger.h
Rejestrator
Klasa rejestratora zawiera metody statyczne do zapisu
class Logger
Zapisz wiadomość
static void
Logger::WriteMessage(const wchar_t* message)
static void
Logger::WriteMessage(const char* message)
Przykład
Ten kod jest przykładem
////////////////////////////////////////////////////////////
/* USAGE EXAMPLE
// The following is an example of VSCppUnit usage.
// It includes examples of attribute metadata, fixtures,
// unit tests with assertions, and custom logging.
#include <CppUnitTest.h>
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
BEGIN_TEST_MODULE_ATTRIBUTE()
TEST_MODULE_ATTRIBUTE(L"Date", L"2010/6/12")
END_TEST_MODULE_ATTRIBUTE()
TEST_MODULE_INITIALIZE(ModuleInitialize)
{
Logger::WriteMessage("In Module Initialize");
}
TEST_MODULE_CLEANUP(ModuleCleanup)
{
Logger::WriteMessage("In Module Cleanup");
}
TEST_CLASS(Class1)
{
public:
Class1()
{
Logger::WriteMessage("In Class1");
}
~Class1()
{
Logger::WriteMessage("In ~Class1");
}
TEST_CLASS_INITIALIZE(ClassInitialize)
{
Logger::WriteMessage("In Class Initialize");
}
TEST_CLASS_CLEANUP(ClassCleanup)
{
Logger::WriteMessage("In Class Cleanup");
}
BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
TEST_OWNER(L"OwnerName")
TEST_PRIORITY(1)
END_TEST_METHOD_ATTRIBUTE()
TEST_METHOD(Method1)
{
Logger::WriteMessage("In Method1");
Assert::AreEqual(0, 0);
}
TEST_METHOD(Method2)
{
Assert::Fail(L"Fail");
}
};
Zobacz też
Koncepcje
Weryfikowanie kodu przy użyciu testów jednostkowych
Testy jednostkowe istniejących aplikacji C++ za pomocą narzędzia Eksplorator testów
Inne zasoby
Testy jednostkowe kodu natywnego za pomocą narzędzia Eksplorator testów