저는 Visual C++ 환경에서 애플리케이션을 개발하는 학생입니다. 지난 몇 년간 Visual Studio 6.0을 사용했었는데, 얼마 전에 Visual Studio 2005 Team System 을 이용하여 개발 하기 시작했습니다. Visual Studio 2005 Team System을 살펴보면, Unit Test 라는 기능이 있었습니다. 하지만, Unit Test에 대한 자료가 거의 없을뿐만 아니라, 대부분이 C# 프로젝트와 관련된 것이었습니다.
더불어, MSDN 에 링크 되어있는 C++ 관련 Unit Test 샘플 코드 소스는 링크가 깨져있더군요. MSDN의 설명 중간 중간에 있는 샘플 코드에는 C++ 과 관련된 내용은 거의 전무한 상태 였습니다. 검색을 하던도중 VSTS에 들어있는 Unit Test 라는것이 NUnit 에서 시작되었다는 이야기를 들었습니다. Searching을 하다가 우연하게 방문한 https://andromedarabbit.net에서 andromedarabbit 님이 NUnit에 대해 생각 하고 계신것 같아서, 여러가지 궁금증을 물어보려고 합니다.
답변: VS.NET 2003 이후의 C++은 크게 두 가지입니다. 하나는 .NET Framework 위에서 작동하는 Managed C++이고, 다른 하나는 기존의 Native C++입니다. 말씀하신 Visual Studio 2005 Team System의 Unit Test는 Managed C++에 적용되는 내용일 겁니다.
Native C++이라면 CppUnit라는 오픈소스 프로젝트의 성과물을 사용해보시는 것은 어떨까요? 구글에서 cppunit으로 검색하면 상단에서 프로젝트 홈페이지를 찾을 수 있습니다.
마지막으로 세 가지 질문에 대해 대답해 드리겠습니다.
-
이미 만들어져있는 클래스와 함수를 가져와서 테스트를 할 수는 없는지 궁금합니다.
답변: 단위 테스트의 개념을 잘 모르시는 것 같습니다. 메인 소스코드와 단위 테스트 코드는 분리됩니다. cppunit 사이트 등에 가셔서 예제를 살펴보시는 것은 어떨까요?
VS.NET 메인 프로젝트와 단위 테스트 프로젝트를 별도로 둘 수도 있고, 메인 프로젝트 안에 단위 테스트 코드를 넣을 수도 있습니다. 만약 한 프로젝트에 단위 테스트 코드까지 집어넣을 생각이시라면 #if UNIT_TEST 등과 같이 전처리 명령어를 사용하면 됩니다.
-
만약 가능하다면, C++ 에서는 이미 만들어져있는 클래스를 어떻게 연결 시킬수 있는지 궁금합니다.
답변: VS.NET으로 여러 개의 프로젝트를 한번에 사용해 보신 적이 없나요? 단위 테스트 프로젝트의 프로젝트 설정에 들어가셔서 메인 프로젝트의 산출물(DLL, EXE 등)이나 소스코드를 참조하면 됩니다.
-
만약 불가능 하다면, 이미 만들어져있는 클래스와 함수를 가져와서 테스트 할 수 있는 다른 프로그램은 어떤게 있을까요?
답변: 가능합니다.