Boost.Test-资源及测试套件TestSuite编写示例

Note:boost_1_84_0的动态连接库资源链接

1.代码组织如下图:
Boost.Test-资源及测试套件TestSuite编写示例_第1张图片
2.包括程序入口的代码文件 示例:

// M24.01.MyTestModule.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#define BOOST_TEST_MODULE MYTESTMODULE
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_NO_MAIN
#include 

//动态连接到UnitTestFrameWork
#pragma comment(lib,"boost_unit_test_framework-vc140-mt-gd-x64-1_84.lib")

// initialization function:
//bool init_unit_test()
//{
//	std::cout << "using custom init"<
//	return true;
//}

int main(int argc, char** argv)
{
	//生产代码
	//....


	//测试代码
	boost::unit_test::unit_test_main(&init_unit_test, argc, argv);
    return 0;
}

BOOST_AUTO_TEST_CASE(myTestCase3)
{
	std::vector<int> a{ 1,2,3 }, c{ 1,5,3,4 };
	std::vector<long> b{ 1,5,3 };

	// the following does not compile
	//BOOST_TEST(a == b);
	//BOOST_TEST(a <= b);

	// stl defaults to lexicographical comparison
	BOOST_TEST(a < c);
	BOOST_TEST(a >= c);
	BOOST_TEST(a != c);
}

3.Test Suite 1 代码文件:

#include "stdafx.h"
#define BOOST_TEST_DYN_LINK
#include 

// 生产代码
int add(int i, int j) { return i + j; }

// 针对生产代码的测试代码
BOOST_AUTO_TEST_CASE(myTestCase1)
{
	// six ways to detect and report the same error:
	// continues on error
	BOOST_TEST(add(2, 2) == 4);          //1
	// throws on error
	BOOST_TEST_REQUIRE(add(2, 2) == 4);  //2

	//continues on error
	if (add(2, 2) != 4)
		BOOST_ERROR("Ouch...");           // 3

	// throws on error
	if (add(2, 2) != 4)
		BOOST_FAIL("Ouch...");             //4

	// throws on error
	if (add(2, 2) != 4)
		throw "Ouch...";                     //5

	// continues on error                   //6
	BOOST_TEST(add(2, 2) == 4,				 
		"2 plus 2 is not 4 but " << add(2, 2));
}

4.Test Suite 2 代码文件:

#include "stdafx.h"
#define BOOST_TEST_DYN_LINK
#include 

//生产代码
class const_string {
public:
	// Constructors
	const_string() {};
	const_string(std::string const& s) {};
	const_string(char const* s) {};
	const_string(char const* s, size_t length) {};
	const_string(char const* begin, char const* end) {};

	// Access methods
	char const* data() const { return ""; };
	size_t      length() const { return 0; };
	bool        is_empty() const { return true; };

	// ...
};

// 测试代码
BOOST_AUTO_TEST_CASE(myTestCase2)
{
	const_string cs0("");                                                 // 1 //
	BOOST_TEST(cs0.length() == (size_t)0);
	BOOST_TEST(cs0.is_empty());

	const_string cs01(NULL);                                              // 2 //
	BOOST_TEST(cs01.length() == (size_t)0);
	BOOST_TEST(cs01.is_empty());

	const_string cs1("test_string");                                      // 3 //
	BOOST_TEST(std::strcmp(cs1.data(), "test_string") == 0);
	BOOST_TEST(cs1.length() == std::strlen("test_string"));

	std::string s("test_string");                                         // 4 //
	const_string cs2(s);
	BOOST_TEST(std::strcmp(cs2.data(), "test_string") == 0);

	const_string cs3(cs1);                                                // 5 //
	BOOST_TEST(std::strcmp(cs3.data(), "test_string") == 0);

	const_string cs4("test_string", 4);                                   // 6 //
	BOOST_TEST(std::strncmp(cs4.data(), "test", cs4.length()) == 0);

	const_string cs5(s.data(), s.data() + s.length());                    // 7 //
	BOOST_TEST(std::strncmp(cs5.data(), "test_string", cs5.length()) == 0);

	const_string cs_array[] = { "str1", "str2" };                           // 8 //
	//BOOST_TEST(cs_array[0] == "str1");
	//BOOST_TEST(cs_array[1] == "str2");
}

参考3、4 编写更多测试套件。

测试结果如下:
Boost.Test-资源及测试套件TestSuite编写示例_第2张图片

你可能感兴趣的:(单元测试,c++,Boost)