私にも同様の問題がありました。インターフェイスといくつかの実装があります。もちろん、私はインターフェイスに対してテストを書くだけです。また、実装ごとにテストをコピーしたくありません。したがって、私はテストにパラメータを渡す方法を探しました。まあ、私の解決策はそれほど美しいものではありませんが、それは簡単で、今まで私が思いついた唯一のものです。ここで
は私の問題のために私の解決策は、(あなたのケースで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"をビルドから除外する必要があります。