Параметризованный метод тестирования в Microsoft :: VisualStudio :: CppUnitTestFramework

Я пишу несколько тестов для моего проекта C ++, используя Microsoft :: VisualStudio :: CppUnitTestFramework. Здесь у меня есть случай, когда мне нужно запустить один и тот же тест с разными параметрами.

В Nunit Framework for CPP я могу добиться этого с помощью следующего кода.

[Test, SequentialAttribute]
void MyTest([Values("A", "B")] std::string s)
{

}

Передав эти параметры, этот тест будет выполнен 2 раза.

MyTest("A")
MyTest("B")

Есть ли подобный способ добиться этого в Microsoft :: VisualStudio :: CppUnitTestFramework модульный тест.

Любая помощь высоко ценится.

1

Решение

У меня была похожая проблема: у меня есть интерфейс и несколько его реализаций. Конечно, я хочу писать тесты только для интерфейса. Кроме того, я не хочу копировать свои тесты для каждой реализации. Поэтому я искал способ передачи параметров в мой тест. Ну, мое решение не очень красивое, но оно простое и единственное, которое я придумал до сих пор.

Вот мое решение для моей проблемы (в вашем случае 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» из сборки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]