문제

은 누구나 사용 허드슨 으로 지속적인 통합을 위해 서버는 C++를 사용하여 프로젝트 Unittest 에 대한 여러++ 테스 라이브러리?

정확히 어떻게 당신은 그것을 설정합니까?

나는 알고 있었다 몇 가지 질문에 지속적인 통합하기 전에,하지만 희망이 하나있다 좁은 범위가 있습니다.

편집:난 명확히 하에 조금 내가 무엇을 찾고 있습니다.나는 이미 구축 설정하면 실패하는 장치-테스트 실패합니다.나는 뭔가를 찾고 같은 허드슨의 JUnit 지원합니다.Unittest 에 대한 여러++을 만들 수 있습 XML 보고서(참조하십시오 ).그래서,아마 누군가가 알고있는 번역하는 방법 이러한 보고서를 JUnit 호환성,허드슨하는 방법을 알게 될 것이 그것을 먹을까?

도움이 되었습니까?

해결책

우리는 내 직장에서 이것을 적극적으로하고 있습니다.

현재 우리는 프리 스타일 소프트웨어 프로젝트를 사용합니다.

  • 전력 저장소에서 15 분마다 업데이트를 확인하십시오
  • 솔루션 파일을 청소하고 빌드하려면 Windows 배치 파일에 전화하십시오.
    • 프로젝트 파일은 건축 후 이벤트로 단위 테스트를 구축하고 실행합니다.
    • 단위 테스트 장애는 테스트에 의해 반환됩니다 main(), 따라서 빌드 오류로 취급됩니다

또한 출력 파일을 생성하기 위해 UnitTest ++에 포함 된 XMLTestReporter를 사용하는 구성을 테스트했습니다. 그만큼 xunit 플러그인 기본적 으로이 출력을 지원하고, 다른 출력과 함께 변환 할 수있는 다른 출력과 함께 버전 0.1.3으로 제공되는 XSL 파일을 변경하여 테스트 기록에서 지속 시간을 기록해야했습니다.

통합에 대해 개선하고 싶은 많은 것들이 있습니다. 빌드 로그는 색칠이나 강조 표시 등이 없어서 길고 구문 분석하기가 어렵지만 지금까지는 여전히 우리에게 유익했습니다.

다른 팁

나는 그것을 확인했다 xunit Patrick Johnmeyer가 승인 된 답변에서 제안한 플러그인. 완전성을 위해서는 다음은 드라이버 코드입니다.

#include <fstream>
#include "UnitTest++.h"
#include "XmlTestReporter.h"

int main( int argc, char *argc[] ) {
    std::ofstream f("file.xml");
    UnitTest::XmlTestReporter reporter(f);
    return UnitTest::RunAllTests(reporter, UnitTest::Test::GetTestList(), NULL, 0);
}

Hudson 구성에서 "테스트 도구 게시 결과 보고서 게시"를 확인하고 "file.xml"

허드슨은 이제 a CPPUNIT 플러그인 그것은 트릭을 할 수 있습니다.

오래 전에 시작했을 사용 허드슨에는 C++프로젝트는 우리가 사용 cpp-unit-lite 및 CruiseControl

우리는 변경 Cpp-unit-라이트를 생성하 JUnit 다음과 같 XML 리포트 파일 및 CruiseControl 선택 XML 보고서 파일.

당신에 대해 동일한 작업을 수행 할 수 있습 unittest 에 대한 여러++및 허드슨 픽업 보고서 파일.

그러나,많은 것 같습니다.보 플롯을 위해 플러그인 허드슨.할 수 있는 스크립트를 추출 숫자의 실패를 통과/에서 테스트를 unittest 에 대한 여러++출력을 사용합 플러그인을 그리는 간단한 그래프를 통과/실패 테스트를 당니다.

로에서 건설 유닛 테스트 보고서는 하지만 무언가를 당신을 얻을 수 있는 빠르게 작동.

CPPUNIT 및 XML 출력과 함께 Hudson을 사용합니다. XML은 XSLT에 의해 주니트 출력으로 번역됩니다. CPPUNIT 사이트는 CPPUNIT 출력을 주니트 출력으로 변환하는 XSLT를 제공합니다. 다음과 같은 MRE 세부 사항을 얻기 위해 약간 해킹했습니다.

  • 네임 스페이스 패키지로
  • 실행 시간

다음을 얻으려면 XML 출력을 변환 할 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<testsuite>
   <testcase name="my test name"
             classname="Package1.Package2.TestClass"
             time="0.25">
      <error type="error"/>
   </testcase>
   ....
</testsuite>

성공의 경우 : 하위 태그를 제거하십시오.

문안 인사

우리는 UnitTest ++ 대신 CXXTest를 사용하는 것을 제외하고는 사무실에서 비슷한 접근 방식을 사용하고 있으며 이제 Google의 IMHO (Google) GTEST 프레임 워크로 마이그레이션하는 과정에 있습니다.

CXXTEST를 사용하면 Patrick J.가 제안한 것과 비슷한 일을했는데, 이는 기본적으로 ANT를 통해 테스트 스위트 프로그램을 실행하는 빌드 단계를 추가하고 테스트가 실패하면 빌드가 실패하게됩니다. 이 접근법의 단점은 테스트 결과로 인해 빌드가 실패한 경우, 콘솔 출력을 통해 사냥을하여 무엇이 잘못되었는지 알아 내야합니다. 또한 테스트 프레임 워크가 주니트 호환 XML을 출력 할 수있는 경우 Hudson이 생성 할 수있는 멋진 차트를 느슨하게합니다.

GTEST로 전환해야 할 동기 부여 요인 중 하나는 Junit XML을 생성한다는 것입니다. 이론적으로 Hudson은 테스트 결과를 구문 분석하여보다 현명한 방식으로 게시 할 수 있습니다. 어쨌든, 그것은 UnitTest ++가 이와 같은 것을 생성하는 것처럼 보이지 않기 때문에 (내가 틀 렸을 때 나를 수정하십시오), 그것은 마우스 포인트 일 수 있지만 적어도 빌드 프로세스에 통합하면 테스트가 실행되도록합니다. 빌드.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top