비슷한 문제점이 있습니다. 인터페이스와 여러 구현이 있습니다. 물론 인터페이스에 대한 테스트 만 작성하고 싶습니다. 또한 각 구현에 대한 테스트를 복사하고 싶지 않습니다. 따라서 필자는 테스트에 매개 변수를 전달하는 방법을 모색했습니다. 글쎄, 내 솔루션은 매우 예쁘지 않지만 그것은 간단하고 지금까지 내 유일한 사람입니다. 여기
내 문제에 대한 내 솔루션 (귀하의 경우 CLASS_UNDER_TEST에 당신이 시험에 통과 할 매개 변수 것)입니다 :
setup.cpp
#include "stdafx.h"
class VehicleInterface
{
public:
VehicleInterface();
virtual ~VehicleInterface();
virtual bool SetSpeed(int x) = 0;
};
class Car : public VehicleInterface {
public:
virtual bool SetSpeed(int x) {
return(true);
}
};
class Bike : public VehicleInterface {
public:
virtual bool SetSpeed(int x) {
return(true);
}
};
#define CLASS_UNDER_TEST Car
#include "unittest.cpp"
#undef CLASS_UNDER_TEST
#define CLASS_UNDER_TEST Bike
#include "unittest.cpp"
#undef CLASS_UNDER_TEST
unittest.cpp
#include "stdafx.h"
#include "CppUnitTest.h"
#define CONCAT2(a, b) a ## b
#define CONCAT(a, b) CONCAT2(a, b)
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
TEST_CLASS(CONCAT(CLASS_UNDER_TEST, Test))
{
public:
CLASS_UNDER_TEST vehicle;
TEST_METHOD(CONCAT(CLASS_UNDER_TEST, _SpeedTest))
{
Assert::IsTrue(vehicle.SetSpeed(42));
}
};
빌드에서 "unittest.cpp"를 제외해야합니다.