当前位置: 技术问答>linux和unix
紧急求救:HP UNIX环境下使用CPPUNIT之疑问
来源: 互联网 发布时间:2016-03-02
本文导语: 源文件如下: // SimpleTest_lhp.cpp : Defines the entry point for the console application. // #include #include #include "cppunit/TestCase.h" #include "cppunit/TestResult.h" #include "cppunit/TestResultCollector.h" #include "cppunit/TextOutputter.h" int mya...
源文件如下:
// SimpleTest_lhp.cpp : Defines the entry point for the console application.
//
#include
#include
#include "cppunit/TestCase.h"
#include "cppunit/TestResult.h"
#include "cppunit/TestResultCollector.h"
#include "cppunit/TextOutputter.h"
int myadd(int x,int y)
{
return x+y;
}
int myadd3(int x,int y)
{
return x-y;
}
//定义测试用例
//class SimpleTest:public CppUnit::TestCase
//{
//public:
// void runTest() //重要测试方法,是重载过来的
// {
// int i=1;
// //CPPUNIT_ASSERT_EQUAL(0,i);
// CPPUNIT_ASSERT_EQUAL(myadd(1,2),3);
//
// //CPPUNIT_ASSERT_EQUAL_MESSAGE("这里好像有问题.",0,i); //另一种报错方法
// }
//};
//class SimpleTest2:public CppUnit::TestCase
//{
//public:
// void runTest() //重要测试方法,是重载过来的
// {
// int i=1;
// //CPPUNIT_ASSERT_EQUAL(0,i);
// CPPUNIT_ASSERT_EQUAL(myadd3(5,2),3);
//
// //CPPUNIT_ASSERT_EQUAL_MESSAGE("这里好像有问题.",0,i); //另一种报错方法
// }
//};
int main(int argc, char* argv[])
{
printf("正式开场了!n");
printf("之和=%dn",myadd(171,29));
// CppUnit::TestResult r;
// CppUnit::TestResultCollector rc;
// r.addListener(&rc); //准备好结果收集器
//
// SimpleTest t;
// t.run(&r); //运行测试用例
//
// SimpleTest2 t2;
// t2.run(&r); //运行测试用例
//
// CppUnit::TextOutputter o(&rc,std::cout);
// o.write(); //将结果输出
return 0;
}
makefile文件内容如下:
#设置进程利用到的基类.h文件的路径
Inc=/bea/cskf/user/lhp/R_Server_new/R_CSServer/cppunit-1.12.0/include
#设置cppunit库文件的路径
Lib=/bea/cskf/user/lhp/R_Server_new/R_CSServer/cppunit-1.12.0/lib
#设置不同操作系统的编译器;HP的C++编译器为aCC;IBM的C++编译器为xlC
XCC=aCC
#设置生成的执行文件
EXEFILE=UT
#定义
MYDEFINE = -D_MSC_VER
#设置工程源代码文件,以空格隔开,如果源代码文件比较多,可以以""进行换行
SOURCEFILE=UnitTestMain.cpp
#设置工程目标代码文件,以空格隔开,如果源代码文件比较多,可以以" "进行换行
OBJFILE=UnitTestMain.o
#由每个开发人员自己定义编译模式
allobj:
${XCC} -c -I${Inc} -AA -DCPPUNIT_NO_STREAM -D_HP_aCC -I/usr/include UnitTestMain.cpp
#生成文件,在sh命令中,执行make -f makefile_template_hp all即可
all:
make allobj
${XCC} -o ${EXEFILE} ${OBJFILE} -L${Lib}
#清除生成的中间文件,在sh命令中,执行make clean即可
clean:
rm *.o ${EXEFILE}
问题:如果把源码中下述四行代码给屏掉,就可以正常编译
#include "cppunit/TestCase.h"
#include "cppunit/TestResult.h"
#include "cppunit/TestResultCollector.h"
#include "cppunit/TextOutputter.h"
如果要打开,也就是想进一步进行CPPUNIT测试,编译之后链接报错信息如下:
[155] % make all
make allobj
aCC -c -I/bea/cskf/user/lhp/R_Server_new/R_CSServer/cppunit-1.12.0/include -AA -DCPPUNIT_NO_STREAM -D_HP_aCC -I/usr/include UnitTestMain.cpp
aCC -o UT UnitTestMain.o -L/bea/cskf/user/lhp/R_Server_new/R_CSServer/cppunit-1.12.0/lib
/usr/ccs/bin/ld: Unsatisfied symbols:
std::__rw_exception::_C_assign(const char *,unsigned long) (first referenced in UnitTestMain.o) (code)
Class tables [Vtable] dependent on key function: "std::exception::~exception()" (first referenced in UnitTestMain.o) (data)
typeid (first referenced in UnitTestMain.o) (data)
std::exception::~exception() (first referenced in UnitTestMain.o) (code)
std::__rw_exception::_C_vformat(int,double *) (first referenced in UnitTestMain.o) (code)
_HPMutexWrapper::~_HPMutexWrapper() (first referenced in UnitTestMain.o) (code)
std::basic_string::__nullref (first referenced in UnitTestMain.o) (data)
*** Error exit code 1
// SimpleTest_lhp.cpp : Defines the entry point for the console application.
//
#include
#include
#include "cppunit/TestCase.h"
#include "cppunit/TestResult.h"
#include "cppunit/TestResultCollector.h"
#include "cppunit/TextOutputter.h"
int myadd(int x,int y)
{
return x+y;
}
int myadd3(int x,int y)
{
return x-y;
}
//定义测试用例
//class SimpleTest:public CppUnit::TestCase
//{
//public:
// void runTest() //重要测试方法,是重载过来的
// {
// int i=1;
// //CPPUNIT_ASSERT_EQUAL(0,i);
// CPPUNIT_ASSERT_EQUAL(myadd(1,2),3);
//
// //CPPUNIT_ASSERT_EQUAL_MESSAGE("这里好像有问题.",0,i); //另一种报错方法
// }
//};
//class SimpleTest2:public CppUnit::TestCase
//{
//public:
// void runTest() //重要测试方法,是重载过来的
// {
// int i=1;
// //CPPUNIT_ASSERT_EQUAL(0,i);
// CPPUNIT_ASSERT_EQUAL(myadd3(5,2),3);
//
// //CPPUNIT_ASSERT_EQUAL_MESSAGE("这里好像有问题.",0,i); //另一种报错方法
// }
//};
int main(int argc, char* argv[])
{
printf("正式开场了!n");
printf("之和=%dn",myadd(171,29));
// CppUnit::TestResult r;
// CppUnit::TestResultCollector rc;
// r.addListener(&rc); //准备好结果收集器
//
// SimpleTest t;
// t.run(&r); //运行测试用例
//
// SimpleTest2 t2;
// t2.run(&r); //运行测试用例
//
// CppUnit::TextOutputter o(&rc,std::cout);
// o.write(); //将结果输出
return 0;
}
makefile文件内容如下:
#设置进程利用到的基类.h文件的路径
Inc=/bea/cskf/user/lhp/R_Server_new/R_CSServer/cppunit-1.12.0/include
#设置cppunit库文件的路径
Lib=/bea/cskf/user/lhp/R_Server_new/R_CSServer/cppunit-1.12.0/lib
#设置不同操作系统的编译器;HP的C++编译器为aCC;IBM的C++编译器为xlC
XCC=aCC
#设置生成的执行文件
EXEFILE=UT
#定义
MYDEFINE = -D_MSC_VER
#设置工程源代码文件,以空格隔开,如果源代码文件比较多,可以以""进行换行
SOURCEFILE=UnitTestMain.cpp
#设置工程目标代码文件,以空格隔开,如果源代码文件比较多,可以以" "进行换行
OBJFILE=UnitTestMain.o
#由每个开发人员自己定义编译模式
allobj:
${XCC} -c -I${Inc} -AA -DCPPUNIT_NO_STREAM -D_HP_aCC -I/usr/include UnitTestMain.cpp
#生成文件,在sh命令中,执行make -f makefile_template_hp all即可
all:
make allobj
${XCC} -o ${EXEFILE} ${OBJFILE} -L${Lib}
#清除生成的中间文件,在sh命令中,执行make clean即可
clean:
rm *.o ${EXEFILE}
问题:如果把源码中下述四行代码给屏掉,就可以正常编译
#include "cppunit/TestCase.h"
#include "cppunit/TestResult.h"
#include "cppunit/TestResultCollector.h"
#include "cppunit/TextOutputter.h"
如果要打开,也就是想进一步进行CPPUNIT测试,编译之后链接报错信息如下:
[155] % make all
make allobj
aCC -c -I/bea/cskf/user/lhp/R_Server_new/R_CSServer/cppunit-1.12.0/include -AA -DCPPUNIT_NO_STREAM -D_HP_aCC -I/usr/include UnitTestMain.cpp
aCC -o UT UnitTestMain.o -L/bea/cskf/user/lhp/R_Server_new/R_CSServer/cppunit-1.12.0/lib
/usr/ccs/bin/ld: Unsatisfied symbols:
std::__rw_exception::_C_assign(const char *,unsigned long) (first referenced in UnitTestMain.o) (code)
Class tables [Vtable] dependent on key function: "std::exception::~exception()" (first referenced in UnitTestMain.o) (data)
typeid (first referenced in UnitTestMain.o) (data)
std::exception::~exception() (first referenced in UnitTestMain.o) (code)
std::__rw_exception::_C_vformat(int,double *) (first referenced in UnitTestMain.o) (code)
_HPMutexWrapper::~_HPMutexWrapper() (first referenced in UnitTestMain.o) (code)
std::basic_string::__nullref (first referenced in UnitTestMain.o) (data)
*** Error exit code 1
|
与CppUnit的编译参数比较一下,可能少了-AA参数。