Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

유닛 테스트 수행을 델파이에서 강력한 DUnitX 프레임워크를 사용해서 하는 방법


Recommended Posts

Muminjon"Learn How To Do Unit Testing In Delphi With The Powerful DUnitX Framework" 을 번역했습니다. (원문 작성: 2020년 12월, 최종 번역: 2024년 2월)

유닛 테스트 수행은 소프트웨어 테스트 수행의 한 유형이다. 특정 유닛(unit, 단위)들 또는 소프트웨어의 특정 부분(segment)들을 대상으로 테스트를 수행한다. 그 목표는 소프트웨어의 각 유닛에 있는 코드들이 예상대로 실행되는지를 검증하는 것이다. 유닛 테스트 수행은 개발자가 애플리케이션을 개발하는 동안 수행된다.

DUnitX는 오픈-소스 유닛 테스트 프레임워크이다. NUnit 테스트 프레임워크를 기반으로 한다. 여기에는 xUnit의 몇 가지 아이디어들이 포함되어 있다.  RAD 스튜디오 안에 DUnitX 프레임워크가 통합됨에 따라 여러분은 윈32, 윈64, 맥OS, 리눅스 등을 대상으로 하는 테스트들을 델파이 애플리케이션 안에서 개발하고 실행할 수 있다.

DUnitX 테스트 프레임워크에서는 테스트 수행 조건에 대한 자체 메서드(method) 세트를 제공한다. 제공되는 메서드들을 사용하여 수많은 조건을 테스트할 수 있다. 이 메서드들은 일반적인 어설션(assertion)들을 대표한다. 또한 여러분은 자신만의 어설션들도 직접 만들 수 있다.

DUnitX는 델파이용 유닛 테스트 프레임워크이다. DUnitX는 제네릭(Generics), 익명 메서드(Anonymous method) 등의 언어/RTL 기능들을 사용한다. 이 기능들은 예전 버전의 델파이에는 없던 것들이다.

DUnitX 기능들

  • 어떤 클래스에도 테스트들이 포함될 수 있다.
  • 애트리뷰트(attribute)-기반 테스트 수행
  • 광범위한 Assert 클래스
  • 테스트 메서드별 그리고 테스트 픽스처(fixture)별 설정 및 분해
  • Xml-Doc을 사용하여 API를 문서화
  • 콘솔 기반 실행(Console Based Runner)
  • 새 테스트들을 생성하는 마법사

DUnitX는 오픈 소스이다. 그리고 학습할 수 있는 실습 패턴들이 많이 있다.

다음은 몇 가지 샘플 소스 코드이다:

unit TestCalcUnit;
 
interface
uses
  DUnitX.TestFramework, CalcUnit;
 
type
 
  [TestFixture]
  TestTCalc = class(TObject)
  strict private
    aTCalc: TCalc;
  public
    [Setup]
    procedure Setup;
    [TearDown]
    procedure TearDown;
    // 샘플 메서드들
    // 테스트: TestCase 애트리뷰트를 사용하고 파라미터들을 제공한다.
    [TestCase('TestA','8,2,10')]
    procedure TestAdd(Value1, Value2, _Result: Integer);
    // 테스트: TestCase 애트리뷰트를 사용하고 파라미터들을 제공한다.
    [TestCase('TestB','3,4,-1')]
    procedure TestSub(Value1, Value2, _Result: Integer);
  end;
 
implementation
 
procedure TestTCalc.Setup;
begin
  aTCalc := TCalc.Create;
end;
 
procedure TestTCalc.TearDown;
begin
  aTCalc := nil;
end;
 
procedure TestTCalc.TestAdd(Value1, Value2, _Result: Integer);
var
  R: Integer;
begin
  R := aTCalc.Add(Value1, Value2);
  Assert.AreEqual(R, _Result);   // 테스트코드
end;
 
procedure TestTCalc.TestSub(Value1, Value2, _Result: Integer);
var
  R: Integer;
begin
  R := aTCalc.Sub(Value1, Value2);
  Assert.AreEqual(R, _Result);  // 테스트코드
 end;
 
initialization
  TDUnitX.RegisterTestFixture(TestTCalc);
end.

DUnitX 유닛 테스트 프레임워크를 확인해 보자.

DUnitX 유닛 테스트 수행에 대해 더 많은 정보는 엠바카데로 DocWiki에서 볼 수 있다.

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.