我正在为我编写的课程编写一些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
非常感谢任何帮助。
答案 0 :(得分:0)
在第一种情况下,您尝试在没有Test实例的情况下调用成员函数。正如你在第二种情况下所做的那样,你需要一个Test来打开它。
在第二种情况下,当你实际拥有一个对象时,你试图使用指向对象的指针来调用一个成员,' - >'。你希望第二个看起来像这样:
test->GenerateHash(...)
如果您以某种方式进行了测试*,那么您可以将其称为
test->GenerateHash(...)
对象使用点,对象指针使用箭头。
更多代码和错误输出会有所帮助。
答案 1 :(得分:0)
如果GenerateHash函数可以是static
方法,则将其设为静态。然后使用Test::GenerateHash(/*your arguments*/);
考虑到您最初尝试调用GenerateHash
的方式,我猜这应该是一个静态方法。如果它的执行不依赖于Test
类的特定实例,那么它可以是静态的。
否则,请使用test.GenerateHash
而不是test->GenerateHash