C++ 访问C++;来自CXX测试的函数

C++ 访问C++;来自CXX测试的函数,c++,cxxtest,C++,Cxxtest,我正在为我编写的类编写一些CXX单元测试。我以前从未编写过CXX测试(这也是我唯一可以使用的框架)。我试图调用类中包含的函数,以便测试输出是否符合预期,但我不确定您是否可以这样做,如果可以,如何做 Test.h: class Test..... { public: std::string GenerateHash(const std::string& user, const std::string& url) const; ... } Test

我正在为我编写的类编写一些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 

任何帮助都将不胜感激。

在第一种情况下,您试图在没有
Test
实例的情况下调用成员函数。您需要一个
测试
来调用它,就像您在第二种情况下所做的那样

在第二种情况下,当您实际拥有一个对象时,您试图使用指向该对象的指针“
->
”的语法调用一个成员。您想让第二个看起来像这样:

test.GenerateHash(...)
如果你有一个测试*,那么你可以这样称呼它

test->GenerateHash(...)
对对象使用
,对对象的指针使用
->


更多的代码和错误输出会有帮助。

如果GenerateHash函数可以是一个
静态方法,那么就将其设置为静态。然后使用
Test::GenerateHash(/*您的参数*/)调用它

考虑到您最初尝试调用
GenerateHash
的方式,我猜这应该是一个静态方法。如果它的执行不依赖于
Test
类的特定实例,那么它可以是静态的


否则,使用
test.GenerateHash
而不是
test->GenerateHash

是否实例化了测试对象?请提供更多代码。您如何尝试访问它?它怎么不起作用?你会犯什么错误?