programing

Google 테스트는 C 코드를 테스트해도 괜찮습니까?

nasanasas 2020. 12. 5. 09:53
반응형

Google 테스트는 C 코드를 테스트해도 괜찮습니까?


그래서 저는 제가 참여하고있는 C ++ 프로젝트에 Google Test를 사용하는 것을 좋아하고 즐겼습니다. 그냥 C (라이브러리)가 될 새로운 프로젝트를 가져 오는 중이며 지금까지 그 이유를 알 수 없습니다. C ++ 프레임 워크 임에도 불구하고 Google Test를 계속 사용하지 않습니다. C ++ 컴파일러를 사용할 수 있다는 것은 문제가되지 않습니다.

직접 C 코드를 테스트하기 위해 Google Test를 사용하지 않아야하는 특별한 이유가 있습니까?

감사.


C ++ 테스트 프레임 워크를 사용하여 C 코드를 테스트하는 것은 매우 일반적이며 주제에 대한 주요 책 에서도이 접근 방식을 따릅니다. 나는 과거에 C 코드 단위 테스트를 위해 googletest를 광범위하게 사용했으며 추천 할 수 있습니다.

유용한 블로그 게시물을 작성했습니다. http://meekrosoft.wordpress.com/2009/11/09/unit-testing-c-code-with-the-googletest-framework/


Google의 모든 C ++ 코드와 마찬가지로 Google 테스트는 예외를 사용하지 않으므로 예외 안전 흐름이 문제가되지 않습니다. 헤더가 C ++와 호환되는 한 (C ++ 키워드를 사용하지 않고 올바른 링크로 심볼을 내 보냅니다) 괜찮습니다.


제이슨, 알아 두세요 !!! :디

Meekrosoft가 말했듯이 네, 가능합니다. 그렇게하려고 할 때도 그의 웹 사이트를 사용했습니다. 작동하지만 한 가지 큰 문제가 있습니다.

GTest는 객체 지향 도구이며 C 언어는 그렇지 않습니다!

예를 들어 GTest에는 개체를 매개 변수로 요청하는 많은 함수 (전체 API의 80 %)가 있습니다. 예를 들면 다음과 같습니다.

EXPECT_CALL(turtle, PenDown())              // turtle is object(class) and PenDown() is method of that object
      .Times(AtLeast(1));

GTest 웹 사이트 https://code.google.com/p/googlemock/wiki/ForDummies 에서 expect_equal , expect_bigger_than 등과 같은 매크로 만 사용합니다.

CMocka 도구 (또는 다른 C 단위 테스트 도구) 를 제안하고 싶습니다 . 또한 Google에서 제공하며 (Google이 아닌 개발자 그룹에 의해 수정 됨) C 언어 용으로 직접 생성됩니다. C 형 소스 코드를 테스트하고 싶을 때 사용합니다.

도움이 되었기를 바랍니다 .. :-) 좋은 하루 되세요 .. :-)


gtest가 C ++이므로 테스트중인 C 헤더를 C ++로 구문 분석 할 것입니다. 이것은 테스트가 헤더가 C에서 소비 가능하다는 것을 보장하지 않는다는 것을 의미합니다. 최근에 제가 구축하고있는 C 라이브러리에서이 문제를 만났습니다.


나는 하나를 지을 수 없었다. "일반적인"CEg에는없는 것이있을 것 같습니다. TestCase는 특정 클래스에서 파생 된 것이라고 생각합니다. 그러나 테스트 내에서 원하는 것을 테스트 할 수 있습니다. 그렇다면 C는 어떻습니까?

참고 URL : https://stackoverflow.com/questions/5335268/is-google-test-ok-for-testing-c-code

반응형