0

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

任何帮助将不胜感激。

4

2 回答 2

0

在第一种情况下,您尝试调用没有Test. 您需要Test调用它,就像您在第二种情况下所做的那样。

->在第二种情况下,当您实际上有一个对象时,您尝试使用具有指向对象的指针' ' 的语法来调用成员。您希望第二个看起来像这样:

test.GenerateHash(...)

如果你有一个测试*,那么你可以这样称呼它

test->GenerateHash(...)

用于.对象,->用于指向对象的指针。

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

于 2011-08-24T14:21:36.543 回答
0

如果 GenerateHash 函数可以是static方法,则将其设为静态。然后使用Test::GenerateHash(/*your arguments*/);

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

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

于 2011-08-24T14:26:08.543 回答