Доступ к функции C ++ из теста CXX - PullRequest
0 голосов
/ 24 августа 2011

Я пишу несколько модульных тестов CXX для написанного мною класса.Я никогда раньше не писал тесты CXX (также это единственная среда, которую я могу использовать).Я пытаюсь вызвать функцию, содержащуюся в моем классе, чтобы я мог проверить выходную информацию - это то, что ожидается, но я не уверен, что вы можете сделать это, и если да, то как.

Test.h:
class Test..... {
    public:
        std::string GenerateHash(const std::string& user, const std::string& url) const;
    ...
}


Test.cpp:
string
Test::GenerateHash(const string& user, const string& urrl) const {
    ...
 }

У меня естьвключил заголовочный файл в тест CXX, но не может получить доступ к функции GenerateHash.

Test.cxx_h:
void testCheckHashGeneration( void ) {
    TS_ASSERT_EQUALS (GenerateHash("testuser", "http://www.stackoverflow.com"), "DFEGEC.....");
}

Error: error: âGenerateHashâ was not declared in this scope

Я также пытался:

Test.cxx_h:
void testCheckHashGeneration( void ) {
    Test test;
    TS_ASSERT_EQUALS (test->GenerateHash("testuser", "http://www.stackoverflow.com"), "DFEGEC.....");
}

Error: error: âTestâ has not been declared 

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 24 августа 2011

Если функция GenerateHash может быть методом static, сделайте ее статической. Затем позвоните, используя Test::GenerateHash(/*your arguments*/);

Учитывая способ, которым вы изначально пытались вызвать GenerateHash, я бы предположил, что это должен быть статический метод. Если его выполнение не зависит от конкретного экземпляра класса Test, то оно может быть статическим.

В противном случае используйте test.GenerateHash вместо test->GenerateHash

0 голосов
/ 24 августа 2011

В первом случае вы пытаетесь вызвать функцию-член без экземпляра Test.Вам нужен тест, чтобы вызвать его, как вы сделали во втором случае.

Во втором случае вы пытаетесь вызвать член, используя синтаксис для указания указателя на объект, '->', когда у вас действительно есть объект.Вы хотите, чтобы вторая выглядела так:

test->GenerateHash(...)

Если у вас как-то был Test *, вы могли бы назвать его так:

test->GenerateHash(...)

используйте точки для объектов, стрелки для указателей наобъекты.

Было бы полезно больше кода и вывод ошибок.

...