2014-07-17 53 views
0

크루즈 컨트롤 통합 테스트를 실행하기 위해 Specflow html 보고서를 작성하려고하는데 이상한 문제가 발생합니다. 모든 테스트가 통과되고 빌드가 성공하면 specflow html 보고서는 크루즈 컨트롤 대시 보드에서 예상대로 볼 수 있습니다. 그러나 빌드가 실패한 경우 (즉, specflow 시나리오가 통과하지 못하는 경우) HTML 보고서 크루즈 컨트롤 출력을 보려고하면 "파일을 찾을 수 없습니다."CruiseControl, Specflow HTML 보고서 파일 병합 작업이 때때로 실패합니다

이 내을 ccnet.config의 관련 부분입니다 :

<publishers> 
    <exec> 
    <executable>(path)specflow.exe </executable> 
    <baseDirectory>(path)</baseDirectory> 
    <buildArgs> nunitexecutionreport (path)/(file) 
    /xmlTestResult:(path)\TestResults\testReport_nunit.xml 
    /out:(path)\testReport.html </buildArgs> 
    <successExitCodes>0</successExitCodes> 
    </exec> 
    <merge> 
    <files> 
     <file>(path)\TestResults\testReport.xml</file> 
     <file action="Copy">(path)\TestResults\testReport.html</file> 
     <file>(path)\TestResults\codeCoverage.xml</file> 
    </files> 
    </merge> 
+0

당신이 무엇을 보여주는가 로그인 원시 XML 빌드를 보면 내 XSL을 변경? 빌드 로그에서 메시지의 "파일을 찾을 수 없습니다"부분입니까? –

+0

빌드 로그의 보고서에 대해 아무 것도 보이지 않습니다. – user123959

+0

빌드 로그 xml을 확인하기 위해 "파일을 찾을 수 없습니다"라는 텍스트가 없습니다. –

답변

0

저도 같은 문제를 가지고 있었다. 내가 한 것은 : (나는 모든 빌드에 대해 다른 유물 디렉토리를 가지고, 성공 또는 실패 때문에)

  • URL입니다 /build/log20141003022201.xml/RetrieveBuildFile을 내 프로젝트 라벨러의 incrementOnFailure 옵션을 사용합니다. aspx? file = TestResult.html 아직 작동하지 않지만 URL RetrieveBuildFile.aspx? file = ../{$ buildNb} /TestResult.html 작동했습니다. 나는 오래된 버전의 ccnet (1.5)을 가지고있다. 새로운 버전에서도 작동 할 것이다.
  • 나는이 url에 연결하는 custom xsl를 썼다. 여기에 주요 코드를

<xsl:if test="contains(//cruisecontrol/parameters/parameter[@name='$CCNetProject']/@value,'Specflow')"> 
    <!-- hack to have the good path to TestResult.html --> 
    <xsl:variable name="buildNb" select="//cruisecontrol/parameters/parameter[@name='$CCNetLabel']/@value" /> 
    <div style="text-align:right; margin:5px; width:100%;"> 
     <a href="RetrieveBuildFile.aspx?file=../{$buildNb}/TestResult.html" target="_blank">View this report in its own window</a> 
    </div> 
    <div> 
     <iframe src="RetrieveBuildFile.aspx?file=../{$buildNb}/TestResult.html" border="1" width="100%" height="1000"></iframe> 
    </div> 
    <!-- /hack--> 
</xsl:if> 

편집이다 : 난 그냥 1.8.5 버전 및 /build/log20141003022201.xml/RetrieveBuildFile.aspx?file=TestResult.html 잘 작동 URL을 설치했습니다. 그래서 나는 다음과 같은

<xsl:if test="contains(//cruisecontrol/parameters/parameter[@name='$CCNetProject']/@value,'Specflow')"> 
    <div style="text-align:right; margin:5px; width:100%;"> 
     <a href="RetrieveBuildFile.aspx?file=TestResult.html" target="_blank">View this report in its own window</a> 
    </div> 
    <div> 
     <iframe src="RetrieveBuildFile.aspx?file=TestResult.html" border="1" width="100%" height="1000"></iframe> 
    </div> 
</xsl:if>