나는 전에 Java를 사용했고 일식으로 무엇이든 할 수있었습니다. 이제 Delphi를 사용하여 인스턴트 메시징 소프트웨어를 수정하고 싶기 때문에 재구성 및 단위 테스트 시스템을 Delphi로 옮기는 방법이 궁금합니다. 이 책은 기존 코드에 단위 테스트를 추가하면 코드에 대한 이해가 심화 될 수 있으며 코드를 개선하기위한 기초가 될 수 있습니다. 따라서 그러한 민첩한 플랫폼을 구축하기 위해 Delphi2005 및 Dunit과 함께 작은 시도를하고 아래 결과를 기록하여 귀하와 공유했습니다.
1. delphi2005를 다운로드하십시오
Borland는 건축가 및 엔터프라이즈 버전의 하늘 높은 가격을 감안할 때 중국에서 전문 버전을 판매하지 않기 때문에 인터넷에서 D 버전 만 다운로드 할 수 있습니다. delphi2005는 크기가 상대적으로 크고 CD도 필요하므로 BT를 사용하여 2CD 버전을 다운로드하는 것이 좋습니다. 종자 주소는 다음과 같습니다.
http://www.delphhifans.com/softview/821.html
2. delphi2005의 SP1을 다운로드하십시오
이 패치를 적용한 후에는 더 빠를 수 있지만 패치가 설치 속도가 느리고 CD를 사용해야한다고합니다. 다운로드 주소는 다음과 같습니다.
http://www.delphhifans.com/softview/970.html
3. Dunit을 다운로드하십시오
https://sourceforge.net/projects/dunit/
4. delphi2005+sp1을 설치하십시오
KeyGen에는 레지스터가 있으며 설치할 때 Delphi의 .NET 및 Win32 버전을 동시에 설치해야하지만 C# Builder는 중요하지 않습니다. Win32 버전 만 설치하면 재구성 함수를 사용할 수 없기 때문입니다 (델파이 2005의 버그는 리팩토링시 .NET의 예외 창으로 나타납니다).
5. delphi2005를 단순화합니다
.NET 버전은 이전 단계에서 동시에 설치되었으므로 시작할 때 Delphi가 매우 느려졌습니다. 이는 레지스트리를 수정하고 일부 IDE 패키지를 삭제하여 달성 할 수 있습니다. 특정 방법은 Delphi 바로 가기 대상, 즉 bds.exe -rxxx 다음에 매개 변수 -rxxx를 추가하는 것입니다. 이 xxx는 당신이 지정하기위한 것이고, hkey_current_user/software/borland/xxx에서 해당 패키지를 찾을 수 있습니다 (이것은 xxx를 선택한 이름입니다) /3.0/ 알려진 IDE 패키지. 인터넷의 다른 Win32 정화 분자처럼 너무 깨끗하게 삭제할 수는 없습니다. 재건에는 쓸모가 없기 때문입니다. 여러 번 실험 한 후 얻은 비교적 간단한 목록은 다음과 같습니다.
"$ (bds) // bin // vclmenudesigner90.bpl"= "(제목없는)"
"$ (bds) // bin // win32debugproide90.bpl"= "(Untitled)"
"$ (bds) // bin // htmide90.bpl"= "HTML 디자이너 패키지"
"$ (bds) // bin // iteidew3290.bpl"= "win32의 통합 번역 환경"
"$ (bds) // bin // srcmanide90.bpl"= "(제목 없음)"
"$ (bds) // bin // todoide90.bpl"= "Borland Todo"
"$ (bds) // bin // htmlhelp290.bpl"= "Borland htmlhelp viewer"
"$ (bds) // bin // idefilefilters90.bpl"= "IDE 파일 필터"
"$ (bds) // bin // startPageIde90.bpl"= "Borland 시작 페이지 IDE 패키지"
"$ (bds) // bin // refactoride90.bpl"= "Borland Core Refactoring 패키지"
"$ (bds) // bin // dbkdebugide90.bpl"= "(제목없는)"
"$ (bds) // bin // ExceptionDiag90.bpl"= "(제목없는)"
"$ (bds) // bin // deployide90.bpl"= "배포 관리자"
"$ (bds) // bin // plugview90.bpl"= "플러그 가능한 트리 뷰 패키지"
"$ (bds) // bin // coreproide90.bpl"= "Core IDE Pro 패키지"
"$ (bds) // bin // idetools90.bpl"= "빌드 도구"
"$ (bds) // bin // unittestide90.bpl"= "(제목 없음)"
"$ (bds) // bin // historyide90.bpl"= "(제목 없음)"
"$ (bds) // bin // htmltidy90.bpl"= "Html Tidy Formatter"
"$ (bds) // bin // htmlfmt90.bpl"= "html 내부 Formatter"
"$ (bds) // bin // mlcc90.bpl"= "마크 업 언어 코드 완료 패키지"
"$ (bds) // bin // delphivclide90.bpl"= "Delphi VCL 디자이너 IDE 패키지"
"$ (bds) // bin // delphicoreproide90.bpl"= "(제목없는)"
"$ (bds) // bin // win32debugide90.bpl"= "(제목 없음)"
"$ (bds) // bin // htmlide90.bpl"= "(제목 없음)"
"$ (bds) // bin // delphide90.bpl"= "delphi win32 IDE 성격"
"$ (bds) // bin // mtspro90.bpl"= "(제목없는)"
"$ (bds) // bin // mtsent90.bpl"= "(제목 없음)"
"$ (bds) // bin // iteidenet90.bpl"= ".NET 용 통합 번역 환경"
"$ (bds) // bin // netimportwiz90.bpl"= "(제목없는)"
"$ (bds) // bin // dataExplorer90.bpl"= "(제목없는)"
아직 시작하는 것은 조금 느리지 만 마침내 참을 수 있습니다.
6. Dunit을 컴파일하고 설치하십시오
알고있는 메소드를 사용하여 DUNIT를 DCU로 컴파일하여 지정된 디렉토리에 넣으십시오. 델파이 도구의 라이브러리 경로 에이 디렉토리를 추가하십시오.> 환경 옵션-> 델파이 옵션-> 라이브러리 -WIN32.
Dunit.exe도 컴파일합니다
7. 프로젝트를 수립하십시오
내가 추천하는 방법은 델파이 프로그램을 작성할 때 인터페이스와 배경을 분리하는 것입니다. 특히 두 개의 프로젝트, 하나의 일반 VCL 프로젝트 및 다른 DLL 프로젝트를 개설하는 것입니다. 아니요, 아니요, DLL에서 코드를 공유 할 수는 없습니다. 이 DLL 프로젝트에는 모든 배경 컨텐츠 인 파일과 백그라운드 테스트가 포함되어 있습니다. 생성 된 DLL은 Dunit에 사용되며 Dunit은 테스트를 읽고 실행할 수 있습니다. 실제로 GUI 부분의 프로젝트에는 모든 파일이 포함되어 있습니다.
이 프로젝트는 GUI, Core 및 TestCore의 세 부분으로 나뉩니다. 프로젝트 1에는 GUI+Core가 포함되며 프로젝트 2에는 Core+TestCore가 포함됩니다. 프로젝트 1의 출력은 Win32exe 프로그램입니다. 프로젝트의 두 번째 출력은 Win32dll 프로그램입니다.
그런 다음이 두 프로젝트를 프로젝트 그룹에 넣을 수 있습니다.
8. 테스트를 작성하십시오
프로젝트 1은 Dephi 프로그램을 작성하는 것과 다르지 않습니다. 테스트는 엔지니어링 No. 2에 작성되었으며 엔지니어링 No. 2 Core의 이름을 부릅니다. 코어에 기본 테스트를 추가하여 1+1이 2인지 확인하겠습니다.
테스트 케이스를 만듭니다
단위 테스트베이스;
인터페이스
용도
TestFramework;
유형
tbasic = 클래스
공공의
함수 추가 (a, b : 정수) : 정수;
끝;
ttestbasic = class (ttestcase)
사적인
fbasic : tbasic;
공공의
절차 설정; 오버라이드;
절차 분해; 오버리;
게시
절차 testAdd;
끝;
구현
함수 tbasic.add (a, b : 정수) : 정수;
시작하다
결과 : = a + b;
끝;
절차 ttestbasic.setup;
시작하다
fbasic : = tbasic.create;
끝;
절차 ttestbasic.teardown;
시작하다
fbasic.free;
끝;
절차 ttestbasic.testadd;
시작하다
Checkequals (2, fbasic.add (1, 1));
끝;
초기화
RegisterTest ( '', ttestbasic.suite);
끝.
core.bdsproj 수정 (Kao, What Weird 접미사)
시작 끝으로 변경
수출
REGISPEDTESTS 이름 '테스트';
끝.
사용 섹션에 TestFramework를 추가하십시오.
Dunit 은이 내보내기 기능을 사용하여 DLL에 등록한 테스트 케이스를 찾습니다.
9. Dunit
도구 메뉴에 Dunit을 추가하면 훨씬 더 편리합니다. 매개 변수를 채우기가 어렵다는 것입니다. 나는 매크로를 내부에 사용하지 않았고 단지 절대 경로를 채웠습니다. 나와 같은 절대 경로를 채우면 도구 메뉴에서 Dunit을 선택하면 테스트 목록을 직접 볼 수 있습니다.
도구 메뉴에 Dunit을 추가하지 않으면 File-> Load Test의 파일 선택 창에서 Core Project Core.dll에서 컴파일 된 DLL을 찾아야합니다.
———
지금까지 리팩토링 기능과 단위 테스트가 모두 있습니다. 남은 것은 기존 코드에 테스트를 추가 한 다음 천천히 리팩터링하는 것입니다.