原文地址
https://www.cnblogs.com/wstong/p/12924295.html
目錄
第一步
下載源代碼 http://sourceforge.net/projects/cppunit/files/cppunit/1.12.1/cppunit-1.12.1.tar.gz/download
第二步
解壓下載的文件,並進入到src目錄,打開CppUnitLibraries.dsw
提示升級安裝什麼的,都點確定
右鍵cppunit,選擇屬性,在彈出窗口將目標文件名由$(ProjectName)$(ProjectName)改成$(ProjectName)d$(ProjectName)d
右鍵cppunit_dll,選擇屬性,在彈出窗口將目標文件名由$(ProjectName)$(ProjectName)改成cppunitd_dll
右鍵DllPlugInTester,選擇屬性,在彈出窗口將目標文件名由$(ProjectName)$(ProjectName)改成$(ProjectName)d_dll$(ProjectName)d_dll
右鍵TestPlugInRunner,選擇屬性,在彈出窗口將目標文件名由$(ProjectName)$(ProjectName)改成$(ProjectName)d$(ProjectName)d
右鍵TestRunner,選擇屬性,在彈出窗口將目標文件名由$(ProjectName)$(ProjectName)改成$(ProjectName)d$(ProjectName)d
第三步
右鍵DSPlugin,選擇屬性,在配置屬性-鏈接器-高級,將無入口點改爲 是
打開TestRunner-UserInterface-MsDevCallerListCtrl.cpp,在67行中將version由7.0改成8.0
編譯生成lib庫
選擇生成-批生成
全選後點擊生成
結果
使用
新建一個項目
右鍵項目-屬性
配置屬性-VC++目錄
包含目錄添加include
庫目錄添加lib
配置屬性-鏈接器-輸入
附加依賴項添加cppunitd.lib
calculator類測試
總共要建立5個文件,建完分佈如下
代碼部分
// calculator.h
#pragma once
#ifndef CALCULATOR_H_
#define CALCULATOR_H_
class Calculator {
public:
Calculator();
void add(double x);
void substract(double x);
void multiply(double x);
void divide(double x);
void square(double x);
void suqareRoot(double x);
void clear();
double get_result();
private:
double result;
};
#endif // CALCULATOR_H_
// calculator.cpp
#include "stdafx.h"
#include "calculator.h"
#include <iostream>
#include <cmath>
using namespace std;
Calculator::Calculator() : result(0.0) {}
void Calculator::add(double x) {
result += x;
}
void Calculator::substract(double x) {
result -= x;
}
void Calculator::multiply(double x) {
result *= x;
}
void Calculator::divide(double x) {
result /= x;
}
void Calculator::square(double x) {
result = x * x;
}
void Calculator::suqareRoot(double x) {
result = pow(result, x);
}
void Calculator::clear() {
result = 0;
}
double Calculator::get_result() {
return result;
}
// test_calculator.h
#pragma once
#include <cppunit/extensions/HelperMacros.h> // 頭文件
class test_calculator : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(test_calculator);
// 添加兩個測試函數
CPPUNIT_TEST(test_calculator1);
CPPUNIT_TEST(test_calculator2);
CPPUNIT_TEST(test_calculator3);
CPPUNIT_TEST_SUITE_END();
public:
void setUp();
void tearDown();
test_calculator();
~test_calculator();
void test_calculator1();
void test_calculator2();
void test_calculator3();
};
// test_calculator.cpp
#include "stdafx.h"
#include "test_calculator.h"
#include "calculator.h"
#include <iostream>
using namespace std;
// 將測試包註冊爲aTest
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(test_calculator, "aTest");
test_calculator::test_calculator() {}
test_calculator::~test_calculator() {}
void test_calculator::setUp()
{
cout << "begin test" << endl;
}
void test_calculator::tearDown() {
cout << "end test" << endl;
}
void test_calculator::test_calculator1()
{
Calculator cal; // 創建一個計算器類
cal.add(100);
CPPUNIT_ASSERT(cal.get_result() == 100);
}
void test_calculator::test_calculator2()
{
Calculator cal;
cal.add(123);
cal.multiply(100);
CPPUNIT_ASSERT(cal.get_result() == 12300);
}
void test_calculator::test_calculator3()
{
Calculator cal;
cal.add(123);
cal.divide(123);
CPPUNIT_ASSERT(cal.get_result() == 1);
}
// test_main.cpp
#include "stdafx.h"
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/CompilerOutputter.h>
int _tmain()
{
CPPUNIT_NS::TestResult tr;
CPPUNIT_NS::TestResultCollector trc;
tr.addListener(&trc);
CPPUNIT_NS::BriefTestProgressListener progress;
tr.addListener(&progress);
CPPUNIT_NS::TestRunner runner;
CPPUNIT_NS::TestFactoryRegistry ® = CppUnit::TestFactoryRegistry::getRegistry("aTest");
runner.addTest(reg.makeTest());
runner.run(tr);
CPPUNIT_NS::CompilerOutputter outputter(&trc, CPPUNIT_NS::stdCOut());
outputter.write();
system("pause");
return 0;
}