модульное тестирование. Можем ли мы передать параметры в функции тестовых случаев в C ++ с помощью CppUnit?

Я использую cppunit для тестирования моего кода на C ++. Я написал свой тестовый прибор, как это

class MainTestFixture : public TestFixture
{
CPPUNIT_TEST_SUITE(MainTestFixture);
CPPUNIT_TEST(Addition);
CPPUNIT_TEST(Multiply);
CPPUNIT_TEST_SUITE_END();

public:
void setUp(void);
void tearDown(void);
protected:
// Test Functions
void Addition(void);
void Multiply(void);
};

Теперь, если я реализую контрольные примеры, такие как

void MainTestFixture::Addition()
{
// CPPUNIT_ASSERT(condition);
}
void MainTestFixture::Multiply()
{
// CPPUNIT_ASSERT(condition);
}

Возможно ли в приведенном выше коде передать параметры функциям сложения и умножения?

Где, как я сделал набор для запуска этого прибора, как показано ниже

#include "MainTestFixture.h"
CPPUNIT_TEST_SUITE_REGISTRATION(MainTestFixture);

using namespace CPPUNIT_NS;
int main()
{
// informs test-listener about testresults
CPPUNIT_NS::TestResult testresult;

// register listener for collecting the test-results
CPPUNIT_NS::TestResultCollector collectedresults;
testresult.addListener (&collectedresults);

// register listener for per-test progress output
CPPUNIT_NS::BriefTestProgressListener progress;
testresult.addListener (&progress);

// insert test-suite at test-runner by registry
CPPUNIT_NS::TestRunner testrunner;
testrunner.addTest (CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest ());
testrunner.run(testresult);

// output results in compiler-format
CPPUNIT_NS::CompilerOutputter compileroutputter(&collectedresults, std::cerr);
compileroutputter.write ();

// Output XML for Jenkins CPPunit plugin
ofstream xmlFileOut("cppMainUnitTest.xml");
XmlOutputter xmlOut(&collectedresults, xmlFileOut);
xmlOut.write();

// return 0 if tests were successful
return collectedresults.wasSuccessful() ? 0 : 1;
}

0

Решение

Нет, ты не можешь. Addition () — это обратный вызов, который будет зарегистрирован в ядре CPPUNIT и вызван драйвером — поэтому он должен использовать интерфейс void (void). Вместо этого вы можете определить свои параметры как члены MainTestFixture.

class MainTestFixture : public TestFixture
{
CPPUNIT_TEST_SUITE(MainTestFixture);
CPPUNIT_TEST(Addition);
CPPUNIT_TEST(Multiply);
CPPUNIT_TEST_SUITE_END();

public:
void setUp(void);
void tearDown(void);
protected:
// Test Functions
void init_fixture();
void Addition(void);
void Multiply(void);
protected:
//data members
param1_t m_param1;
param2_t m_param2;

};

void MainTestFixture::init_fixture()
{
m_param1 = ...;
m_param2 = ...;
}
void MainTestFixture::Addition()
{
param1_t res= m_param1 + ...;
// CPPUNIT_ASSERT(condition);
}
0

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


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