C++ 访问C++;来自CXX测试的函数
我正在为我编写的类编写一些CXX单元测试。我以前从未编写过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
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
是否实例化了测试对象?请提供更多代码。您如何尝试访问它?它怎么不起作用?你会犯什么错误?