#c
#c
Вопрос:
Кто-нибудь может мне помочь с этим? в принципе, у меня есть тестовый класс, в этом тестовом классе у меня есть несколько методов, которые используют один и тот же тип настройки. Позвольте мне показать вам на примере:
class Test:public CxxTest::TestSuite
{
public:
void Test1(){/*...*/}
void Test2(){/*...*/}
};
Для каждого метода тестирования требуется один и тот же тип настройки:
Class c_objectName = AnotherClass::method("c_name","c_name","c_name");
class c_newObjectName = AnotherCLass::create(c_objectName);
В настоящее время я устанавливаю это в каждом отдельном методе, потому что каждый из вышеперечисленных, которые я начал с «c_ …», должен отличаться.
Я попытался создать «глобальный метод», который каждый раз принимал бы строку для их переименования, но затем, похоже, я не могу получить к ним доступ из вызовов методов. Я попробовал следующее:
class Test:public CxxTest::TestSuite
{
public:
void method()
{ Class c_objectName = AnotherClass::method("c_name","c_name","c_name"); <--- cant access these
Class c_newObjectName = AnotherClass::create(c_objectName);
}
void Test1(){/*...*/}
void Test2(){/*...*/}
};
Есть ли способ поместить это в какой-то «глобальный метод», чтобы я мог получить к ним доступ из методов?
Я действительно плохо разбираюсь в объяснениях, так что извините и заранее спасибо
Комментарии:
1. Что вы имеете в виду, «не могу получить к ним доступ»? Какие ошибки вы получаете?
2. Если я что-то не пропустил, похоже, вы ищете «переменные-члены».
3. Что такое «Класс»? Вы не создаете объекты в C с помощью ‘new’, если не используете указатели.
Ответ №1:
Я не могу разобраться в вопросе, но, похоже, что-то подобное поможет:
struct TestFixture
{
Class c_objectName;
Class c_newObjectName;
};
TestFixture makeFixture()
{
TestFixture fixture;
fixture.c_objectName = new Class("c_name","c_name","c_name");
fixture.c_newObjectName = create(c_objectName);
return fixture;
}
(предполагая, что ваш класс (классы?) Можно копировать. Если нет, верните указатель на новый экземпляр TestFixture или что-то вроде scoped_ptr
Затем вы могли бы использовать его в своих методах тестирования:
void Test1()
{
TestFixture fixture = makeFixture();
// use fixture.c_objectName etc.
Если вы не возражаете против совместного использования данных, вы могли бы просто сделать их полями класса Test .
О, я только что понял, что вы используете CxxTest Edit, который, вероятно, имеет лучший способ создания приспособлений / настройки / демонтажа для модульных тестов. Однако описанный выше подход должен работать в любой среде.
Комментарии:
1. Вы правы, я использую Cxx, но я до сих пор не знаю, как это сделать правильно, также я не хотел писать «новый», я просто пытался показать грубый набросок, который я отредактировал выше, чтобы показать это