소개
GoogleTest를 활용하여 작성한 코드의 다수의 테스트 케이스와 정답을 한 번에 테스트할 수 있는 프로세스
예를 들어, 백준 14442번 문제의 3개의 테스트 케이스를 아래와 같이 메모장에 저장 시, 일괄 테스트 가능
6 4 2
0100
1110
1000
0000
0111
0000
9
6 4 1
0100
1110
1000
0000
0111
0000
15
4 4 3
0111
1111
1111
1110
-1
이 프로젝트가 필요한 사람들을 위해 해당 프로젝트의 깃 주소를 첨부하겠습니다.
따라서 프로젝트 구축 과정은 생략하고, 사용 방법 위주로 글을 작성하겠습니다.
프로젝트 깃 주소
https://github.com/MinKevin/-CLion-Algorithm-Test-Code/tree/v1.0.0
사용 방법
1. 아래 플러그인을 CLion에 설치합니다.
2. 문제를 풀 새로운 .cpp 파일 생성 및 algorithm-frame.h 를 구현하여 아래와 같이 작성
#pragma once
void input();
void solution();
void output();
<algorithm-frame.h>
#include "../../algorithm-frame.h"
#include <sstream>
#include <iostream>
using namespace std;
ostringstream oss;
void input() {
oss.str("");
oss.clear();
}
void solution() {
}
void output() {
cout << oss.str();
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
streambuf *pCoutStreamBuf = cout.rdbuf();
cout.rdbuf(oss.rdbuf());
input();
solution();
cout.rdbuf(pCoutStreamBuf);
output();
}
<241009-14442.cpp>
3. 커서가 위의 예시 파일에 있는 상태에서 New Executable C++을 통해(Alt + Shift + E 단축키) 를 통해 해당 파일이 개별적으로 실행될 수 있도록 CMakeLists.txt에 등록합니다.
29번째 줄을 확인해주세요.
add_executable의 양식은 다음과 같습니다.
add_executable({실행파일이름} {대상.cpp파일의 경로})
{대상.cpp파일의 경로}가 위의 예시 파일을 생성한 위치로 자동으로 생성되고
{실행파일이름}은 경로를 _형식으로 바꾸어서 자동 생성됩니다.
하지만 실행 파일 이름에 특수 문자나 한글이 들어가면 인코딩 문제로 프로젝트가 build되지 않습니다. (능력부족...ㅠㅠ)
따라서 이를 본인만의 룰에 따라 수정해야합니다.
저는 21~27번째 줄과 같이 {날짜-번호} 형식으로 이를 수정하겠습니다.
4. 상위의 {대상.cpp파일의 경로}를 복사하여 8번째 줄 "" 사이에 넣어줍니다.
8번째 줄 ""사이에 입력한 대상 파일을 테스트합니다.
다시 말해, 테스트를 원하는 파일의 경로를 ""사이에 넣어주면 됩니다. (.cpp 제외!)
5. Load CMake Change (Ctrl + Shift + O)를 클릭합니다.
6. 코드를 구현합니다.
주의사항
- 입력(cin)은 반드시 input() 부분에서 이루어져야 합니다.
- 출력(cout)또한 output() 부분에서만 이루어져야 합니다.
- 이를 위해 ostringstream을 활용하여 solution() 내부에서의 정답 도출은 아래와 같이 ostringstream 변수인 oss로 출력을 보냅니다.
oss << answer << '\n';
- 마지막으로 output() 부분에서는 oss에 저장된 스트림을 출력하기만하면 됩니다.
void output() {
cout << oss.str();
}
- 전역 변수는 다음의 예제 실행 시에 영향을 끼칩니다. 따라서 꼭 stack, queue, vector 등을 비워야합니다!
7. 대상 cpp파일과 같은 경로에 같은 이름으로 txt 파일을 생성합니다.
CMakeLists.txt 파일의 8번 째 줄의 설정을 통해 txt파일을 읽으므로, 경로와 파일이름이 반드시 일치해야합니다!
8. 테스트를 원하는 테스트 케이스와 정답을 공백('\n')을 통해 구분하여 입력합니다.
처음에 언급한 백준 14442번의 예제 입/출력과 비교해보시면 쉽게 이해가 가능합니다.
9. 상단의 runTests를 실행하여 테스트를 진행합니다.
CMakeLists.txt 를 재로딩하였다면 runTests라는 테스트 실행 설정이 생겼을 겁니다.
이를 실행하면 예제 입/출력을 한 번에 테스트 가능합니다.
이상입니다. 설명이 부족한 부분이 있었다면 댓글을 통해서 물어봐주세요!
'알고리즘 > C++' 카테고리의 다른 글
[백준, C++] 11967번 불켜기 (2) | 2024.10.11 |
---|---|
[백준] 14443번 벽 부수고 이동하기 2 (2차원 배열) (1) | 2024.10.09 |
[백준] 1238 - 파티 by C++ (0) | 2023.08.17 |
[백준] 13414 - 수강신청 by C++ (0) | 2023.06.14 |
[백준] 1261 - 알고스팟 by C++ (0) | 2023.03.24 |
댓글