Referensi API Microsoft.VisualStudio.TestTools.CppUnitTestFramework
Topik ini mencantumkan anggota publik namespace Microsoft::VisualStudio::CppUnitTestFramework
. Gunakan API ini untuk menulis pengujian unit C++ berdasarkan Microsoft Native Unit Test Framework. Ada Contoh Penggunaan di akhir topik.
File header dan lib terletak di bawah <folder penginstalan Visual Studio>\VC\Auxiliary\VS\UnitTest.
Jalur header dan lib otomatis dikonfigurasi dalam proyek Native Test.
Dalam topik ini
CppUnitTest.h
Membuat kelas dan metode pengujian
TEST_CLASS(className)
Diperlukan untuk setiap kelas yang berisi metode pengujian. Mengidentifikasi className sebagai kelas pengujian. TEST_CLASS
harus dideklarasikan pada cakupan namespace.
TEST_METHOD(methodName)
{
// test method body
}
Mendefinisikan methodName sebagai metode pengujian. TEST_METHOD
harus dideklarasikan dalam cakupan kelas metode.
Menginisialisasi dan membersihkan
Metode pengujian
TEST_METHOD_INITIALIZE(methodName)
{
// method initialization code
}
Mendefinisikan methodName sebagai metode yang berjalan sebelum setiap metode pengujian dijalankan. TEST_METHOD_INITIALIZE
hanya dapat didefinisikan sekali dalam kelas pengujian dan harus didefinisikan dalam cakupan kelas pengujian.
TEST_METHOD_CLEANUP(methodName)
{
// test method cleanup code
}
Mendefinisikan methodName sebagai metode yang berjalan setelah setiap metode pengujian dijalankan. TEST_METHOD_CLEANUP
hanya dapat didefinisikan sekali dalam kelas pengujian dan harus didefinisikan dalam cakupan kelas pengujian.
Kelas pengujian
TEST_CLASS_INITIALIZE(methodName)
{
// test class initialization code
}
Mendefinisikan methodName sebagai metode yang berjalan sebelum setiap kelas pengujian dibuat. TEST_CLASS_INITIALIZE
hanya dapat didefinisikan sekali dalam kelas pengujian dan harus didefinisikan dalam cakupan kelas pengujian.
TEST_CLASS_CLEANUP(methodName)
{
// test class cleanup code
}
Menentukan methodName sebagai metode yang berjalan setelah setiap kelas pengujian dibuat. TEST_CLASS_CLEANUP
hanya dapat didefinisikan sekali dalam kelas pengujian dan harus didefinisikan dalam cakupan kelas pengujian.
Modul pengujian
TEST_MODULE_INITIALIZE(methodName)
{
// module initialization code
}
Menentukan methodName metode yang berjalan saat modul dimuat. TEST_MODULE_INITIALIZE
hanya dapat didefinisikan sekali dalam modul pengujian dan harus dideklarasikan pada cakupan namespace layanan.
TEST_MODULE_CLEANUP(methodName)
Menentukan methodName metode yang berjalan saat modul dibongkar. TEST_MODULE_CLEANUP
hanya dapat didefinisikan sekali dalam modul pengujian dan harus dideklarasikan pada cakupan namespace layanan.
Membuat atribut pengujian
Atribut metode pengujian
BEGIN_TEST_METHOD_ATTRIBUTE(testMethodName)
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_METHOD_ATTRIBUTE()
Menambahkan atribut yang ditentukan dengan satu atau beberapa makro TEST_METHOD_ATTRIBUTE
ke metode pengujian testMethodName.
Makro TEST_METHOD_ATTRIBUTE
menentukan atribut dengan nama attributeName dan nilai attributeValue.
Atribut kelas pengujian
BEGIN_TEST_CLASS_ATTRIBUTE(testClassName)
TEST_CLASS_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_CLASS_ATTRIBUTE()
Menambahkan atribut yang ditentukan dengan satu atau beberapa makro TEST_CLASS_ATTRIBUTE
ke testClassName kelas pengujian.
Makro TEST_CLASS_ATTRIBUTE
menentukan atribut dengan nama attributeName dan nilai attributeValue.
Menguji atribut modul
BEGIN_TEST_MODULE_ATTRIBUTE(testModuleName)
TEST_MODULE_ATTRIBUTE(attributeName, attributeValue)
...
END_TEST_MODULE_ATTRIBUTE()
Menambahkan atribut yang ditentukan dengan satu atau beberapa makro TEST_MODULE_ATTRIBUTE
ke modul pengujian testModuleName.
Makro TEST_MODULE_ATTRIBUTE
menentukan atribut dengan nama attributeName dan nilai attributeValue.
Atribut yang telah ditentukan sebelumnya
Makro atribut yang telah ditentukan sebelumnya ini disediakan sebagai kenyamanan untuk kasus umum. Makro atribut ini dapat diganti untuk makro TEST_METHOD_ATTRIBUTE
yang dijelaskan di atas.
TEST_OWNER(ownerAlias)
Mendefinisikan TEST_METHOD_ATTRIBUTE
dengan nama Owner
dan nilai atribut ownerAlias.
TEST_DESCRIPTION(description)
Menentukan TEST_METHOD_ATTRIBUTE
dengan nama Description
dan nilai atribut deskripsi.
TEST_PRIORITY(priority)
Menentukan TEST_METHOD_ATTRIBUTE
dengan nama Priority
dan nilai atribut prioritas.
TEST_WORKITEM(workitem)
Menentukan TEST_METHOD_ATTRIBUTE
dengan nama WorkItem
dan nilai atribut workItem.
TEST_IGNORE()
Menentukan TEST_METHOD_ATTRIBUTE
dengan nama Ignore
dan nilai atribut true
.
CppUnitTestAssert.h
Pernyataan Umum
Sama
Verifikasi bahwa dua objek sama
template<typename T>
static void Assert::AreEqual(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Verifikasi bahwa dua ganda sama
static void Assert::AreEqual(
double expected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Verifikasi bahwa dua float sama
static void Assert::AreEqual(
float expected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Verifikasi bahwa dua string char* sama
static void Assert::AreEqual(
const char* expected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Verifikasi bahwa dua string w_char* sama
static void Assert::AreEqual(
const wchar_t* expected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Tidak Sama
Verifikasi bahwa dua ganda tidak sama
static void Assert::AreNotEqual(
double notExpected,
double actual,
double tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Verifikasi bahwa dua float tidak sama
static void Assert::AreNotEqual(
float notExpected,
float actual,
float tolerance,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Verifikasi bahwa dua string char* tidak sama
static void Assert::AreNotEqual(
const char* notExpected,
const char* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Verifikasi bahwa dua string w_char* tidak sama
static void Assert::AreNotEqual(
const wchar_t* notExpected,
const wchar_t* actual,
bool ignoreCase = false,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Verifikasi bahwa dua referensi tidak sama berdasarkan operator==.
template<typename T>
static void Assert::AreNotEqual(
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Sama
Verifikasi bahwa dua referensi merujuk ke instans objek (identitas) yang sama.
template<typename T>
static void Assert::AreSame(
const T& expected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Tidak Sama
Verifikasi bahwa dua referensi tidak merujuk ke instans objek (identitas) yang sama.
template<typename T>
static void Assert::AreNotSame (
const T& notExpected,
const T& actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Null
Verifikasi bahwa pointer adalah NULL.
template<typename T>
static void Assert::IsNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Bukan Null
Verifikasi bahwa penunjuk bukan NULL
template<typename T>
static void Assert::IsNotNull(
const T* actual,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Benar
Verifikasi bahwa kondisi benar
static void Assert::IsTrue(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Salah
Verifikasi bahwa kondisi salah
static void Assert::IsFalse(
bool condition,
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Gagal
Paksa hasil kasus pengujian gagal
static void Assert::Fail(
const wchar_t* message = NULL,
const __LineInfo* pLineInfo = NULL)
Pernyataan Runtime Windows
Sama
Memverifikasi bahwa dua penunjuk runtime Windows sama.
template<typename T>
static void Assert::AreEqual(
T^ expected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Memverifikasi bahwa dua string Platform::String^ sama.
template<typename T>
static void Assert::AreEqual(
T^ expected,
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Sama
Memverifikasi bahwa dua referensi Windows Runtime mereferensikan objek yang sama.
template<typename T>
static void Assert::AreSame(
T% expected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Tidak Sama
Memverifikasi bahwa dua penunjuk runtime Windows tidak sama.
template<typename T>
static void Assert::AreNotEqual(
T^ notExpected,
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Memverifikasi bahwa dua string Platform::String^ tidak sama.
static void Assert::AreNotEqual(
Platform::String^ notExpected,
Platform::String^ actual,
bool ignoreCase = false,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Tidak Sama
Memverifikasi bahwa dua referensi Windows Runtime tidak mereferensikan objek yang sama.
template<typename T>
static void Assert::AreNotSame(
T% notExpected,
T% actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Null
Memverifikasi bahwa penunjuk Windows Runtime adalah nullptr.
template<typename T>
static void Assert::IsNull(
T^ actual,
Platform::String^ message = nullptr,
const __LineInfo* pLineInfo= nullptr)
Bukan Null
Memverifikasi bahwa penunjuk runtime Windows bukan nullptr.
template<typename T>
static void Assert::IsNotNull(
T^ actual,
Platform::String^ message= nullptr,
const __LineInfo* pLineInfo= nullptr)
Pernyataan Pengecualian
Mengharapkan Pengecualian
Verifikasi bahwa fungsi memunculkan pengecualian:
template<typename _EXPECTEDEXCEPTION, typename _FUNCTOR>
static void Assert::ExpectException(
_FUNCTOR functor,
const wchar_t* message= NULL,
const __LineInfo* pLineInfo= NULL)
Verifikasi bahwa fungsi memunculkan pengecualian:
template<typename _EXPECTEDEXCEPTION, typename _RETURNTYPE>
static void Assert::ExpectException(
_RETURNTYPE (*func)(),
const wchar_t* message= NULL,
const __LineInfo* pLineInfo = NULL)
CppUnitTestLogger.h
Pencatat
Kelas Pencatat berisi metode statis untuk menulis ke Jendela Output.
Tulis Pesan
Menulis string ke Jendela Output
static void Logger::WriteMessage(const wchar_t* message)
static void Logger::WriteMessage(const char* message)
Contoh
Kode ini adalah contoh penggunaan VSCppUnit. Ini termasuk contoh metadata atribut, perlengkapan, pengujian unit dengan pernyataan, dan pengelogan kustom.
// USAGE EXAMPLE
#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");
}
};
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk