⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testsetobjects1.cpp

📁 本源码给出了xml解释程序以及基于xml文件内容的数据结构构造示例
💻 CPP
字号:
// TestSetObjects1.cpp: implementation of the CTestSetObjects class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CXML2ITEMS.h"
#include "TestSetObjects1.h"
#include "XMLFile.h"
#include "TestCaseObjects.h"
#include "TestRunObjects.h"
#include "TestStepObjects.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

IMPLEMENT_SERIAL(CTestSetObject, CObject, 0)

CTestSetObject::CTestSetObject()
{

}

CTestSetObject::CTestSetObject(MSXML2::IXMLDOMNodePtr PtrNode)
{
	p_TestSetNode = PtrNode;
}

CTestSetObject::~CTestSetObject()
{
	p_TestSetNode = NULL;
}

void CTestSetObject::FormatMyObject(CString& str)
{
	str.Format(_T("{%s, %s, %s, %s, %s}"),
				(LPCTSTR)m_strCycleID, 
				(LPCTSTR)m_strName, 
				(LPCTSTR)m_strTestSetDesc,
				(LPCTSTR)m_strTestSetFolder,
				(LPCTSTR)m_strProject);
}

void CTestSetObject::Serialize(CArchive& ar)
{
	//WORD w;
	if (ar.IsStoring())
	{
		//w = (WORD)m_int;
		ar << m_strCycleID;
		ar << m_strName;
		ar << m_strTestSetDesc;
		ar << m_strTestSetFolder;
		ar << m_strProject;
	}
	else
	{
		//ar >> w;
		//m_int = w;
		ar >> m_strCycleID;
		ar >> m_strName;
		ar >> m_strTestSetDesc;
		ar >> m_strTestSetFolder;
		ar >> m_strProject;
	}
}


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CTestSetObjects::CTestSetObjects(CXMLFile* p_XMLFile)
{
	p_theXMLFile = p_XMLFile;	
	MSXML2::IXMLDOMNodePtr PtrNode;	
	char* pNode="TestSet";
	p_theXMLFile->GetNode(pNode, PtrNode);
	if(PtrNode!=NULL)                         //TestSet节点非空
	{
		while(PtrNode!=NULL)
		{
			CTestSetObject*  p_TestSet = new CTestSetObject(PtrNode);		
			p_TestSet->m_strCycleID = ::SysAllocString(PtrNode->Getattributes()->getNamedItem("ID")->text);
			p_TestSet->m_strName = ::SysAllocString(PtrNode->Getattributes()->getNamedItem("Name")->text);
			p_TestSet->m_strTestSetDesc = ::SysAllocString(PtrNode->Getattributes()->getNamedItem("Descript")->text);
			CString str = ::SysAllocString(PtrNode->GetparentNode()->Getattributes()->getNamedItem("DomainName")->text);
			str += ":";
			str += PtrNode->GetparentNode()->Getattributes()->getNamedItem("ProjectName")->text;
			p_TestSet->m_strProject = str;			
//			p_TestSet->m_strProject = ::SysAllocString(PtrNode->Getattributes()->getNamedItem("Project")->text);
			CString strtemp =  ::SysAllocString(PtrNode->Getattributes()->getNamedItem("TestSetFolderPath")->text);
			strtemp.TrimLeft("Root\\");			
			p_TestSet->m_strTestSetFolder = strtemp;
		
//			CString str = p_TestSet->m_strCycleID;
			CTestCaseObjects* p_TestCases = new CTestCaseObjects(PtrNode);     //构造TestCase集合
			p_TestSet->p_objTestCaseArray = p_TestCases;		
		
			m_testsetobArray.Add(p_TestSet);		
			PtrNode = PtrNode->GetnextSibling();
		}
		return;
	}
	AfxMessageBox("无测试计划TestSet节点!");
	return;

}

CTestSetObjects::~CTestSetObjects()
{
	
	for (int n = 0; n < m_testsetobArray.GetSize(); n++)
	{			
		int m = (m_testsetobArray[n]->p_objTestCaseArray->m_testcaseobArray).GetSize(); 		
		for (int k = 0; k < m; k++)
		{
			int x = (m_testsetobArray[n]->p_objTestCaseArray->m_testcaseobArray[k]->p_objTestRunArray->m_testrunobArray).GetSize();
			for (int p = 0; p < x; p++)
			{
				delete m_testsetobArray[n]->p_objTestCaseArray->m_testcaseobArray[k]->p_objTestRunArray->m_testrunobArray[p]->p_objTestStepArray;  //删除teststep集合类
			}
			
			delete m_testsetobArray[n]->p_objTestCaseArray->m_testcaseobArray[k]->p_objTestRunArray;  //删除testrun集合类
			//delete m_testsetobArray[n]->p_objTestCaseArray->m_testcaseobArray[k]->p_objTestStepArray;   //删除teststep集合类
		}		
		delete m_testsetobArray[n]->p_objTestCaseArray;	       	//删除testcase集合类
		delete m_testsetobArray[n];                             //删除testset集合类                        
	}
	p_theXMLFile = NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -