|
下面是一段改进代码,可是 有一句前面的话我看不懂,不知道怎么理解才好,而且我电脑上找不到这个文件夹的 :
将cppunit的include拷贝到你的include目录下;
编译cppunit, cppunit_dll, 最后应该包含4个.lib, 两个.dll
将lib文件拷贝到你的lib目录下
将dll文件拷贝到你的bin目录下,这个目录应该在环境变量PATH中。
如果使用MFC进行GUI的testrunner,还需要编译testrunner项目,然后
将对应的4个lib文件拷贝到你的lib目录
将对应的4个dll文件拷贝到你的bin目录下
安装 AddingUnitTestMethod.dsm 到你的 msdev 6.0
下面是AddingUnitTestMethod.dsm 的代码,我修改了一下,添加了一个addSuiteMethod的方法。
Made by bloodchen
bloodchen@hotmail.com
add by edsoncy@yahoo.com.cn
sub AddTestSuiteClass()
On Error Resume Next
dim proj_path,ext,pos,proj_dir,MyCppFile,MyCppName,MyHFile,MyHName,ClassName,HText,CPPText
proj_path = ActiveProject.fullname
ext =
pos = len (proj_path)
Do While ext <> \
ext = Mid(proj_path, pos, 1)
pos = pos -1
Loop
proj_dir = left(proj_path, pos+1)
ClassName=InputBox(Enter the Suite name[not include Suite]:, Suite Name)
if ActiveProject.Type <> Build then
MsgBox This project is not valid. Ending macro.
Exit Sub
end if
if (len(ClassName) <= 0) then
MsgBox Invalid suite name. Ending macro.
Exit Sub
end if
ClassName=CTest
MyCppName=proj_dir+ClassName+Suite.cpp
MyHName=proj_dir+ClassName+Suite.h
ActiveProject.AddFile MyCppName
ActiveProject.AddFile MyHName
Documents.Add Text
ActiveDocument.Selection.StartOfDocument
HText= #ifndef _+ClassName+_SUITE_INCLUDE_H_+VbCrLf& _
#define _+ClassName+_SUITE_INCLUDE_H_+VbCrLf& _
+VbCrLf& _
#include <cppunit\testSuite.h>+VbCrLf& _
#include <string>+VbCrLf& _
namespace +ClassName+Suite+VbCrLf& _
{+VbCrLf& _
inline std::string name()+VbCrLf& _
{+VbCrLf& _
return +chr(34)+ClassName+chr(34)+;+VbCrLf& _
}+VbCrLf& _
+VbCrLf& _
CppUnit::Test *suite();+VbCrLf& _
+VbCrLf& _
};+VbCrLf& _
#endif+VbCrLf
ActiveDocument.Selection = HText
ActiveDocument.Save MyHName
WriteFile MyHName,HText
Documents.Add Text
ActiveDocument.Selection.StartOfDocument
CPPText = #include +chr(34)+stdafx.h+chr(34)+VbCrLf& _
#include <cppunit/extensions/TestFactoryRegistry.h>+VbCrLf& _
#include +chr(34)+ClassName+Suite.h +chr(34)+VbCrLf& _
+VbCrLf& _
namespace +ClassName+Suite+VbCrLf& _
{+VbCrLf& _
CppUnit::Test* suite()+VbCrLf& _
{+VbCrLf& _
CppUnit::TestFactoryRegistry ®istry = +VbCrLf& _
CppUnit::TestFactoryRegistry::getRegistry(name());+VbCrLf& _
+VbCrLf& _
return registry.makeTest();+VbCrLf& _
}+VbCrLf& _
}
WriteFile MyCppName,CPPText
ActiveDocument.Selection = CPPText
ActiveDocument.Save MyCppName
End sub
Sub AddTestClass()
On Error Resume Next
dim proj_path,ext,pos,proj_dir,MyCppFile,MyCppName,MyHFile,MyHName,ClassName,HText,CPPText
proj_path = ActiveProject.fullname
ext =
pos = len (proj_path)
Do While ext <> \
ext = Mid(proj_path, pos, 1)
pos = pos -1
Loop
proj_dir = left(proj_path, pos+1)
ClassName=InputBox(Enter the class name:, Class Name)
if ActiveProject.Type <> Build then
MsgBox This project is not valid. Ending macro.
Exit Sub
end if
if (len(ClassName) <= 0) then
MsgBox Invalid class name. Ending macro.
Exit Sub
end if
ClassName=CTest
MyCppName=proj_dir+ClassName+.cpp
MyHName=proj_dir+ClassName+.h
ActiveProject.AddFile MyCppName
ActiveProject.AddFile MyHName
Documents.Add Text
ActiveDocument.Selection.StartOfDocument
HText= #ifndef _+ClassName+_TEST_INCLUDE_H_+VbCrLf& _
#define _+ClassName+_TEST_INCLUDE_H_+VbCrLf& _
+VbCrLf& _
#include <cppunit\testcase.h>+VbCrLf& _
#include <cppunit\extensions\HelperMacros.h>+VbCrLf& _
class +ClassName+:public CppUnit::TestCase+VbCrLf& _
{+VbCrLf& _
CPPUNIT_TEST_SUITE( +ClassName+ );+VbCrLf& _
CPPUNIT_TEST_SUITE_END();+VbCrLf& _
public:+VbCrLf& _
+ClassName+();+VbCrLf& _
virtual ~+ClassName+();+VbCrLf& _
};+VbCrLf& _
#endif+VbCrLf
ActiveDocument.Selection = HText
ActiveDocument.Save MyHName
WriteFile MyHName,HText
Documents.Add Text
ActiveDocument.Selection.StartOfDocument
CPPText = #include +chr(34)+stdafx.h+chr(34)+VbCrLf& _
#include +chr(34)+ClassName+.h+chr(34)+VbCrLf& _
#include +chr(34)+xxxSuite.h+chr(34)+VbCrLf& _
+VbCrLf& _
+VbCrLf& _
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(+ClassName+ , xxxSuite::name() );+VbCrLf& _
+VbCrLf& _
+VbCrLf& _
ClassName+::+ClassName+()+VbCrLf& _
{+VbCrLf& _
}+VbCrLf& _
+VbCrLf& _
+VbCrLf& _
ClassName+::~+ClassName+()+VbCrLf& _
{+VbCrLf& _
}
WriteFile MyCppName,CPPText
ActiveDocument.Selection = CPPText
ActiveDocument.Save MyCppName
End Sub
Sub ToggleHandCPP()
DEs criptION: Opens the .cpp or .h file for the current document.
Toggles between the .cpp & .h file
ext = ActiveDocument.FullName
If ext = Then
msgbox (Error, not a .cpp or .h file)
exit sub
End If
DocName = UCase(ext)
If Right(DocName,4) = .CPP Then
fn = left(DocName, Len(DocName)-3) & h
ElseIf Right(DocName,2) = .H Then
fn = Left(DocName, Len(DocName)-1) & cpp
Else
msgbox (Error, not a .cpp or a .h file)
exit sub
End If
msgbox (fn)
on error resume next
Documents.Open (fn)
End Sub
Sub AddTestMethod()
strHpt = ActiveDocument.FullName
if right(strHpt,3) = CPP Or right (strHpt,3) = cpp Then
ActiveDocument.Selection.SelectLine
strText = ActiveDocument.Selection.Text
if (Instr(strText, :: ) = 0) Then
MsgBox(Line not valid !!)
Exit Sub
End If
else
exit sub
end if
pos = Instr(strText, ::)
strName = Right(strText, (Len(strText) - (pos+1)))
pos = Instr(strName,()
strName = Left(strName,pos-1)
strClass = Left(strText,pos - 1)
while (instr(strClass, ) > 0)
pos = instr(strClass, )
strTyp = strTyp & Left(strClass, pos)
strClass = Right(strClass, Len(strClass) - (pos) )
wend
ToggleHandCPP
ActiveDocument.Selection.SelectAll
strHead = ActiveDocument.Selection.Text
if (instr(strHead,strClass) = 0) Then
MsgBox( Cant find class & strClass & !!)
ToggleHandCPP
Exit Sub
End If
ActiveDocument.Selection.EndOfDocument
lineBottom = ActiveDocument.Selection.CurrentLine
ActiveDocument.Selection.StartOfDocument
ActiveDocument.Selection.StartOfLine
ActiveDocument.Selection.SelectLine
strLine = ActiveDocument.Selection.Text
while (instr(strLine, strName) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom)
ActiveDocument.Selection.StartOfLine
ActiveDocument.Selection.LineDown dsMove
ActiveDocument.Selection.SelectLine
strLine = ActiveDocument.Selection.Text
Wend
if (ActiveDocument.Selection.CurrentLine < lineBottom) Then
if( instr(strLine, CPPUNIT_TEST ) <> 0 )Then
ToggleHandCPP
Exit Sub
end if
End If
ActiveDocument.Selection.StartOfDocument
ActiveDocument.Selection.StartOfLine
ActiveDocument.Selection.SelectLine
strLine = ActiveDocument.Selection.Text
while (instr(strLine, CPPUNIT_TEST_SUITE_END(); ) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom)
ActiveDocument.Selection.StartOfLine
ActiveDocument.Selection.LineDown dsMove
ActiveDocument.Selection.SelectLine
strLine = ActiveDocument.Selection.Text
Wend
if (ActiveDocument.Selection.CurrentLine < lineBottom) Then
ActiveDocument.Selection.EndOfLine
ActiveDocument.Selection.LineUp
ActiveDocument.Selection.EndOfLine
ActiveDocument.Selection.NewLine
ActiveDocument.Selection = CPPUNIT_TEST( &strName& );
else
MsgBox(CPPUNIT_TEST_SUITE_END not found)
end if
ToggleHandCPP
End Sub
红子显示的就是了,他说的文件 我在电脑上找不到的啊,很郁闷,我的毕业设计就靠他了! |
|