2016-06-29 2 views
1

가 나는 C에서 나는 몇 가지 테스트를 쓰고 있어요 ++ 파일이 오류를 얻을 : 캐치 테스트 프레임 워크 문제가 : 캐치를 사용할 수 없습니다 : 세션을()

error: no member named 'Session' in namespace 'Catch' 
     testResult = Catch::Session().run(test_argc, test_argv); 
        ~~~~~~~^ 

가 catch.hpp 하나의 헤더 파일에서 찾고, 내가 발견 Session() 멤버 함수를 구현해야하는 코드는 어딘가에서 찾을 수없는 #ifdef 때문에 회색으로 표시됩니다.

세션 클래스를 사용하도록 설정할 매크로가 있습니까?

캐치 버전 : 1.5.3 및 1.5.6.

참조 : https://github.com/philsquared/Catch/blob/master/docs/own-main.md

+2

필수 사항 : 여러분은'#include 'catch.hpp 전에'CATCH_CONFIG_RUNNER'를 정의하고 있습니다, 맞습니까? – jaggedSpire

+0

@jaggedSpire - 테스트를 작성하는 곳이 아닌 main()을 정의하는 파일에서 예, 한 번만. – Pietro

+0

컴파일 오류가 main(), correct?를 정의한 파일에 있습니까? – jaggedSpire

답변

1

당신은 당신이 당신의 자신의 main이 실행 정의하지 않는 파일에서 Catch::Session의 생성자를 호출을 시도하고 있습니다. documentation on defining your own main에 따르면, Catch::Session 하나 개의 인스턴스 만이있을 예정이다 :

Catch::Session session; // There must be exactly once instance 

이 그 곳이기 때문에 가능성이 캐치 (그것이 사용자 정의 main 정의에 사용할 수 없습니다 번역 단위로 Catch::Session의 건설을 방해입니다 컴파일 된 실수를 막기 위해 사용됩니다.

+0

그리고 한 애플리케이션에서 여러 번 테스트를 실행하고 다른 argc로 실행하려면 어떻게해야합니까? 하나의 인스턴스 만 사용하지 않고 인수를 유지하는 것 같습니다. –

+0

은 나에게 새로운 질문 자료처럼 들립니다. – jaggedSpire

관련 문제