2010-02-21 2 views
10

우리는 대규모 델파이 프로젝트 (150 만 라인의 코드)를 보유하고 있으며 민첩한 프로세스 사용으로 옮겨 가고 있습니다.FinalBuilder 및 AQTime을 사용하여 DUnit 테스트 커버리지 통계 가져 오기

우리는 이미 개발 팀의 모든 사람에게 전자 메일에 단위 테스트 (dUnit)와 코드 메트릭 (CodeHealer)을 포함하도록 업데이트 한 지속적인 통합 환경 (FinalBuilder)을 보유하고 있습니다. 단위 테스트 커버리지는 그리 좋지 않으므로 모든 빌드에서 테스트 커버리지 결과를 얻기 위해 AQtime을 혼합하여 사용하려고합니다.

"프로그램 실행"작업을 사용하여 단위 테스트 실행 파일을 실행하고 결과를 기록한 후 나중에 파일을 구문 분석합니다. "스크립트 실행"태스크를 사용하여 COM을 통해 AQtime을 실행하고 결과를 XML로 내 보내서 결과를 구문 분석 할 계획입니다.

문제는 단위 테스트 실행 파일을 실행하는 AQtime과 관련하여 직접 단위 테스트 실행 파일을 직접 모니터링하는 기능이 손실됩니다. FinalBuilder가 두 작업의 결과를 파싱하도록하고 싶습니다. 누구든지 AQtime에서 호출 될 때 dUnit 결과에 액세스하는 방법을 알고 있습니까?

답변

7

과 같이 될 것입니다, 우리는에서은 DUnit 테스트를 실행하지 마십시오 AQTime,

대신 FinalBuilder를 사용하여 Dunit 테스트를 작성하고 실행합니다.

단위 테스트에서 XmlTestRunner를 사용하면 테스트가 실패하거나 결과 XML 파일에서 XPath 쿼리를 사용하지 못하는지 알 수 있습니다.

업데이트 : 최근 업데이트 된 FinalBuilder 7.0에서는 이제 DUnit을 지원합니다. 설치 후 FinalBuilder 디렉토리 아래에있는 자체 XMLTestrunner.pas를 사용합니다. 이 러너는 NUnit과 동일한 형식으로 테스트 결과를 출력합니다. 그런 다음 FinalBuilder 서버에 실제로 통합됩니다.

+0

로버트 감사. 우리 빌드에 있던 dUnit의 버전에 XMLTestRunner가 없습니다. sourceforge에서 dUnit 9.3을 다운로드하고 Contrib 폴더에서 XMLTestRunner를 가져 왔습니다. 내가 원했던 모든 것을 다 해냈다. – Catharz

+1

Catharz, 대답이 있으면 대답을 받아 들여야합니다. –

2

천천히 진화하고있는 설정에 대해 설명하는 것이 좋습니다.

  • 은 DUnit 테스트 TextTestRunner 부에 정의 TTextTestListener 콘솔을 사용하여 응용 프로그램으로 컴파일된다.
  • CI 서버는 모든 프로젝트를 빌드하고 모든 테스트를 실행하는 cmd 스크립트입니다.
  • 테스트 결과는 파일로 파이프됩니다. 여전히 나중에 구문 분석 할 수있는 파일로 결과를 파이프 할 수있는 동안

해결책는 AQTime이 콘솔 응용 프로그램을 프로파일 가질 수 있습니다!

또 다른 해결책은 자신 만의 TestListener 객체를 구현하고 해당 객체가 이벤트 로그에 직접 기록하거나, 로그 파일, 데이터베이스 또는 원하는 곳 어디에서든지 FinalBuilder에서 직접 선택하도록 할 수 있습니다. 대신에 프로젝트 파일이 같은 데의

Application.Initialize; 
    if System.IsConsole then TextTestRunner.RunRegisteredTests 
    else GUITestRunner.RunRegisteredTests; 

그것은 우리는이 같은 경로를 아래로 실행이

Application.Initialize; 
    if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests 
    else GUITestRunner.RunRegisteredTests; 
+0

감사합니다. Lieven. dUnit 실행 파일의 결과를 파이프로 보내기 위해 AQtime을 시도했지만 작동하지 않았습니다. 필자도 자신 만의 TestListener를 구현하는 방법에 대해 살펴 보았습니다. 그러나 dUnit 9.3의 XMLTestRunner를 살펴보면 훨씬 쉽게 보입니다. – Catharz

+0

또한 코드를 변경하여 TextTestRunner.RunRegisteredTests (rxbHaltOnFailures) 으로 변경하여 일부 테스트가 실패 할 때 오류 코드 <> 0이 표시되도록하는 것이 좋습니다. 연속 통합에 우수합니다. – marius

+0

@marius : thx, 나는 그것을 몰랐다. 현재 우리는 오류/실패의 양을 찾기 위해 테스트 결과에서 grep 검색을 수행합니다. –

관련 문제