저는 학생이며, 테스트를 시작하기 전에 테스트 코드를 작성하고 테스트 코드를 작성하여 테스트하려고합니다. 지금 시도하려는 것은 테스트 중입니다. 코드는 값 의미를 제대로 방지합니다. 내 과제에서 각 클래스에 대해 자신의 개인 복사 생성자와 할당 연산자가 정의되어 있지 않으므로 아무것도 선언하지 않았습니다. 테스트 프로그램에서 호출 될 때 예상했던 컴파일 오류가 발생합니다. 이런 식으로 뭔가 :컴파일 오류에 대한 C++ 테스트
error: 'myClass::myClass(const &myClass)' is private'
error: 'myClass& myClass::operator=(const myClass&)' is private
내 테스트 코드를 컴파일하고 실행하지만, 이러한 오류가 발생했다는 것을 나에게 보여 있도록 시도/캐치를 사용하는 방법이 있나요? 나는 시도했다 :
myClass obj1(...);
myClass obj2(...);
try{
obj1 = obj2;
throw 1;
}
catch(int e){
assert(e==1);
}
하지만 컴파일러는 여전히 나에게 위의 오류를주고있다. 이것들은 '예외'가 아닌가? 그들이 던지지 않을 것인가?
try/catch를 올바르게 이해하고 있다면 런타임 오류를 처리하고 위에 오류가 발생하지 않은 오류를 처리합니다.
더 많은 조사를 한 후에 C++ 내에서 네이티브하게 특정 컴파일 오류를 테스트하는 방법이 없다고 생각됩니다 (대부분의 언어에서이 사실을 생각할 수 있습니다). 나는 post을 읽었는데, C++ 코드 스 니펫을 컴파일하고 오류를 검사하는 스크립팅 언어로 테스트 코드를 작성하고, 또 다른 post은 Boost.Build를 사용하도록 권장합니다.
내가하려는 일을하는 가장 쉽고/좋은 방법은 무엇입니까?
나는 Boost.Build에 관한 문서를 살펴 봤는데 내 머리 위로 조금있다. 만약 내가 그것을 사용하면 어떻게 파일을 테스트 할 것이라고, 'test.cpp'컴파일, 그리고 아마도 'test.cpp'와 발생하는 특정 컴파일 오류를 처리 할 수 있습니까?
도움 주셔서 감사합니다.
P. 이것은 나의 첫 번째 게시물 중 하나이며, "충분한"연구를 수행하고 다른 모든 작업을 올바르게 완료했기를 바랍니다. 미안해.
은 즉시 당신이 당신의 프로그램을 컴파일, 당신은 오류의 목록을 얻을. 충분하지 않았습니까?! 테스트 클래스를 추가하면 코드에서 더 많은 "컴파일 오류"를 추출 할 수 없습니다. 테스트 클래스는 (컴파일 후) 코드를 실행하고 의미 론적 오류를 추출합니다. – Shahbaz
필자가 테스트하고 싶은 소수의 연산만을 가지고있는이 경우, 컴파일 오류를 읽는 것은 큰 문제가 아니 었습니다. 하지만 큰 프로젝트를 수행하면서 많은 작업/행동을 방지하고 컴파일 오류를 생성하려는 작업/동작이있을 때 어떤 일이 발생합니까? 수동으로 읽고 각각을 확인하는 것은 약간 지루한 것 같습니다. –
잠깐, 런타임 작업/동작에 "컴파일 오류가 발생할 수 없습니다". 컴파일러는 코드를 읽고, C++ 언어를 어휘 적으로, 어휘 적으로, 의미 론적으로 따르고 코드를 생성합니다. C++ 언어에 의해 지정된 것만 검사합니다. 생성 된 코드가 작동하지 않으면 컴파일러와 관련이 없습니다 (따라서 컴파일 오류를 줄 수는 없습니다) – Shahbaz