티스토리 뷰

기타

hello googletest

developer0hye 2023. 2. 2. 00:42

https://github.com/developer0hye/googletest-hello-world

 

GitHub - developer0hye/googletest-hello-world

Contribute to developer0hye/googletest-hello-world development by creating an account on GitHub.

github.com

 

googletest + cmake 를 이용해 단위 테스트 과정을 구현해보았다.

 

예제는 아래 예제들을 참고했다. matgomes.com 의 예제에서는 곱셈 연산 함수를 예제로 들었는데 나는 덧셈 연산 함수로 예제를 진행했다.

 

 

https://matgomes.com/integrate-google-test-into-cmake/

 

Integrating Google Test Into CMake Projects

Google Test is the most popular testing framework for C++. In this post, you will learn how to integrate GTest into your CMake project in three different ways!

matgomes.com

 

https://github.com/google/googletest/blob/main/googletest/README.md

 

GitHub - google/googletest: GoogleTest - Google Testing and Mocking Framework

GoogleTest - Google Testing and Mocking Framework. Contribute to google/googletest development by creating an account on GitHub.

github.com

 

googletest 설치를 CMake의 FetchContent_Declare 를 기반으로 하였는데, 여기서 좀 불편한점이 있었다.

 

FetchContent_Declare 를 사용해서 프로젝트를 땡겨오면 build 과정에서 설치가 되어진다. 그러면 PC에 googletest 가 따로 기존에 설치되지 않았으면, VSCode상에서 gtest 헤더 파일을 못찾아서 gtest 관련 함수에 대한 intellisense 가 제대로 동작하지 않는다. 원활한 intellisense 동작을 위해서는 한 번 코드를 대강짜고 빌드후에 다시 작업을 해줘야한다. 살짝 불편하다.

 

*이건 아마 Configure 과정에서 받아오는 옵션이 따로있거나 아예 명령어가 따로 있을 거 같긴하다.

 

내 경우에는 {프로젝트 폴더}/build 에서 빌드되도록 하니

 

{프로젝트 폴더}/build/_deps/googletest-src/ 경로로 googletest가 다운로드가 됐다.

 

그래서 intellisense를 위하여 해당 경로를 추가해줬다.

 

그다음 빌드를 하니 build 폴더내에 test 란 폴더가 생겼고 거기에 내가 지정한 테스트 실행 파일이 생성됨을 확인하였다.

굳이 저 경로까지 들어가서 실행할 필요는 없고 build 폴더에서 ctest . 라고만 입력해주면 테스트 프로그램이 실행된다.

 

테스트 내용은 아래와 같다.

 

그냥 1+1, 0+0이 잘나오나 정도만 체크했다.

 

 

그 다음은 Github Actions 에서 빌드부터 테스트까지 수행되게끔 스크립트를 작성하였다.

 

main 브랜치에서 잘되는 걸 확인하고 

 

verify-test 라는 브랜치를 하나 새로 따고 고의로 테스트를 실패하도록 add 함수에서 덧셈 연산 대신 곱셈 연산이 실행되도록 수정했다.

 

 

그다음 PR을 날려봤다.

 

https://github.com/developer0hye/googletest-hello-world/pull/1

 

+ 대신 * 로 변경 by developer0hye · Pull Request #1 · developer0hye/googletest-hello-world

actions 의 build&test 과정에서 걸려서 실패해야함

github.com

 

결과는...!

 

 

실패! Github Actions에서 잘잡아냈다.

 

 

어디서 실패한건지 로그를 봐보자.

 

 

Test 과정에서 오류가 발생했다! 잘잡아냈다.

 

이제 아래 프로젝트에도 적용해봐야겠다.

 

https://github.com/developer0hye/Modern-Cpp-NMS

 

GitHub - developer0hye/Modern-Cpp-NMS: A Modern C++ implementation of NMS

A Modern C++ implementation of NMS. Contribute to developer0hye/Modern-Cpp-NMS development by creating an account on GitHub.

github.com

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함