2010-06-11 3 views
2

야간 빌드가 완료되면 자동으로 NUnit 테스트가 실행됩니다. 나는 새로운 빌드를 감지 한 콘솔 응용 프로그램을 가지고 있으며 빌드 된 MSI를 로컬 폴더에 복사하고 모든 구성 요소를 테스트 서버에 배포합니다. 그 후, 나는 Process/ProcessStartInfo를 사용하여 "nunit-console.exe"를 실행하여 실행되는 NUnit dll에서 여러 테스트를 수행합니다. 내 질문은 프로그래밍 방식으로 총 성공/실패 테스트의 수치를 얻을 수있는 방법은 무엇입니까?NUnit 결과를 프로그래밍 방식으로 수집

답변

3

CruiseControl.NET과 같은 지속적인 통합 서버 사용을 고려 했습니까?

테스트를 빌드하고 실행하고 결과를 웹 페이지에 표시합니다. 툴을 원한다면 nunit-console.exe의 결과를 XML로 출력하고 크루즈 컨트롤에서 나온 것과 같은 XSLT 스크립트로 구문 분석/변환하십시오.

Here is an example of such an XSL filenunit-console.exe의 직접 출력에서 ​​변환을 실행하면 select 문을 수정하고 cruisecontrol을 제거해야합니다.

그러나 지속적인 통합에 관심이있는 것 같습니다.

0

우리는 최근 비슷한 요구 사항을 가지고 있었고 결과 파일을 하나의 결과 집합으로 결합하는 작은 오픈 소스 라이브러리를 작성했습니다 (모든 nunit-console을 사용하여 모든 테스트를 실행 한 것처럼).

당신은 https://github.com/15below/NUnitMerger

1

에서 찾을 수 있습니다 우리는 비슷한 요구 사항을했고, 우리가 한 일은 NUnit과에 의해 생성 된 테스트 결과 XML 파일로 읽을 수 있었다.

XmlDocument testresultxmldoc = new XmlDocument(); 
testresultxmldoc.Load(this.nunitresultxmlfile); 

XmlNode mainresultnode = testresultxmldoc.SelectSingleNode("test-results"); 
this.MachineName = mainresultnode.SelectSingleNode("environment").Attributes["machine-name"].Value; 
int ignoredtests = Convert.ToInt16(mainresultnode.Attributes["ignored"].Value); 
int errors = Convert.ToInt16(mainresultnode.Attributes["errors"].Value); 
int failures = Convert.ToInt16(mainresultnode.Attributes["failures"].Value); 
int totaltests = Convert.ToInt16(mainresultnode.Attributes["total"].Value); 
int invalidtests = Convert.ToInt16(mainresultnode.Attributes["invalid"].Value); 
int inconclusivetests = Convert.ToInt16(mainresultnode.Attributes["inconclusive"].Value); 
0

나는 release notes for nunit 2.4.3 인용합니다 :

콘솔 주자는 이제 테스트를 실행하려고에서 발생한 오류에 대한 부정적인 반환 코드를 사용합니다. 테스트 자체의 실패 또는 오류는 또는 오류 수와 동일한 양수 리턴 코드 을 제공합니다.

(강조 광산). 여기서 의미하는 바는 bash에서 보통 그렇듯이 0은 성공을 나타내고 0이 아닌 것은 실패 또는 오류를 나타냅니다 (위와 같음).

HTH

관련 문제