본문 바로가기

별걸다하는 IT/개발환경 세팅&TIPS

[Visual Studio]비주얼스튜디오 알고리즘 단위테스트(unit test) 확인하는 법

[C언어, C++언어, Java 언어 강의 모음, 링크 모음]

 

테스트케이스좀 넣어서 확인해보게 단위테스트 생성하는 법!! 

 

오늘은 엄청엄청 간단한 단위테스트를 만들어볼거예요

ㅎㅎ 정말 초 심플 버전으로! 알고리즘 문제 푸는 용!

 

프로그래머스 같은 알고리즘 사이트 풀 경우에도 그렇고 알고리즘 문제를 심심치 않게 풀다보면 

메인에다가 매번 입력값 바꿔가면서 결과 확인하는 것도 번거롭고, 

파일에다가 테스트케이스 저장해놓고 일일이 불러들여서 확인하는 로직 작성하는 거 조차 번거롭잖아요

 

하나의 함수에 아규먼트 값을 여러개 바꿔서 테스트해보고 싶다던가

클래스의 메소드를 테스트 해보고 싶다던가 

할 때 간단하게 사용해볼 수 있는 단위테스트 프로젝트 생성하기 입니다. ㅎㅎ

 

덧셈 기능만 하는 간단한 함수를 테스트해볼게요 

1
2
3
int solution(int a, int b){
    return a+b;
}
cs

 

처음 하는 사람들을 위한 레알 초 자세한 순서 정리

1. 비쥬얼 스튜디오를 킵니다.

2. ctrl+shift+N으로 프로젝트를 만든 후 테스트할 솔루션 함수를 작성해줘요. 저는 Test1으로 만들었음

3. ctrl+shift+a를 눌러서 cpp파일을 누른 뒤 평소에 코딩하듯 코딩을 해줄게요. 테스트할 함수를 코딩합니다. ㅎㅎ

프로젝트가 커지면 헤더파일도 분리하고 클래스도 정의하고 할테지만 단순 알고리즘 풀이에는 cpp파일 하나면 이상 필요한 일이 별로 없죠 ㅎㅎ

4. 위 사진처럼 코드를 작성하고 나면 프로젝트 우클릭 -> add -> New Project를 눌러줍니다.

C++보면 Test라는 게 있어요 -> Native Unit Test Project클릭후 생성

5. 고럼 솔루션창에 보면 이렇게 프로젝트가 두 개가 생기는데요 

단위테스트 레퍼런스 우 클릭한 후 Add Reference -> 아까 테스트할려 했던 프로젝트 클릭 (Test1) -> OK

6. 테스트 하기 위한 설정은 다 끝났어요 ㅎㅎ 이게 끝이랍니다. ㅎㅎ 테스트 프로젝트의 cpp파일로 가서 이제 테스트케이스 작성해줄거예요. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
 
namespace UnitTest1
{        
    TEST_CLASS(UnitTest1)
    {
    public:
        
        TEST_METHOD(TestMethod1)
        {
            // TODO: Your test code here
        }
    };
}
cs

가면 이렇게 기본 틀이 작성 되어 있습니다. 

 

6-1. #include 해서 테스트하고자 하는 함수 파일을 임포트. 이 예제의 경우 Test1프로젝트의 Source.cpp파일에 있었으므로 #include "../Test1/Source.cpp"해줍니다.

6-2. 확인 코드 작성

Assert::AreEqual이라는 함수는 내가 정답으로 나올거라 추측하는 값과 실제 값이 일치하는지 확인해줘요 

Assert::AreEqual(4, solution(1,3)); 해주면 두번째 결과 값이 첫 번째 값과 일치하니까 테스트 통과가 되겠죠!

6-3. TestMethod1, TestMethod2 이렇게 해서 테스트 케이스를 늘려갈 수 있어요ㅎㅎ

7. 테스트 실행~

상단 메뉴바에서 Test->Run->All Tests 해줘도 되고 

Test_Method 우클릭한다음에 테스트 실행 눌러줘도 됩니다. ㅎㅎ

고러면 얘가 막 테스트를 하더니 Test Explorer에 테스트 결과를 알려줍니다.

먼저 두 개중 하나만 통과했다고 뜨네요 ㅎㅎ

2 tests 1 failed라고!

TestMethod1 테스트는 통과했는데 TestMethod2가 통과하지 못했네요 

solution(1,4)의 결과는 5여야하는데 기대값을 0으로 우리가 놓고 테스트를 돌렸다는 것을 알 수 있어요 ㅎㅎ 

매번 빌드하고 다시 변수값 바꾸고 빌드하기보다는 

이렇게 테스트 환경을 이용해서 한 번에 테스트해보기~

아주아주 사소한 포스팅이지만 아나 모르나 차이는 크니깜 ㅎㅎㅎ 포스팅하기 ㅎㅎ