从CXX测试访问C ++函数

时间:2011-08-24 13:43:33

标签: c++ cxxtest

我正在为我编写的课程编写一些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 :(得分:0)

在第一种情况下,您尝试在没有Test实例的情况下调用成员函数。正如你在第二种情况下所做的那样,你需要一个Test来打开它。

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

test->GenerateHash(...)

如果您以某种方式进行了测试*,那么您可以将其称为

test->GenerateHash(...)

对象使用点,对象指针使用箭头。

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

答案 1 :(得分:0)

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

进行调用

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

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