[c++] 가상 함수를 이용한 유닛 테스트(unit testing)
가상 함수를 이용하여 유닛 테스트를 작성하려면, 테스트 대상 클래스에서 virtual
키워드를 사용하여 메서드를 선언해야 합니다. 그리고 이 테스트를 상속받는 테스트 클래스를 작성합니다.
가상 함수와 상속을 이용한 유닛 테스트의 예제를 살펴보겠습니다.
#include <iostream>
#include <cassert>
class Base {
public:
virtual int add(int a, int b) {
return a + b;
}
};
class TestBase : public Base {
public:
int add(int a, int b) override {
// Override the add method for testing
return 42;
}
};
int main() {
TestBase testObj;
assert(testObj.add(1, 2) == 42); // This will pass
assert(testObj.Base::add(1, 2) == 3); // This will also pass
}
이 예제에서 Base
클래스에는 add
라는 가상 함수가 있고, TestBase
클래스는 Base
클래스에서 이를 상속받아 add
함수를 오버라이드(override)합니다. 이를 통해 우리는 TestBase
클래스에서 add
함수의 동작을 임의로 변경하여 유닛 테스트를 만들 수 있습니다.
이러한 방식으로 유닛 테스트를 작성하면, 어플리케이션의 일부분을 분리하여 개별적으로 테스트할 수 있어 코드의 격리성(isolation)을 보장할 수 있습니다. 따라서 코드 변경 시 테스트를 재실행하여 예기치 않는 부작용을 방지할 수 있습니다.
이러한 방법으로 가상 함수와 상속을 사용하여 C++에서 유닛 테스트를 작성할 수 있습니다.