1

我正在尝试使用 Ubuntu NetBeans 对我的程序进行一些 CppUnit 测试,但我不断遇到类似的错误(无效使用 void 表达式)。我不确定出了什么问题。任何帮助将不胜感激。

错误是这样的:

g++    -c -O2 -I/usr/include/cppunit -MMD -MP -MF build/Release/GNU-Linux-x86/AssignmentTest.o.d -o build/Release/GNU-Linux-x86/AssignmentTest.o AssignmentTest.cpp
AssignmentTest.cpp: In member function ‘void AssignmentTest::testTitle()’:
AssignmentTest.cpp:10: error: invalid use of void expression

我的作业测试.cpp:

#include "AssignmentTest.h"
#include "GetInfo.h"

CPPUNIT_TEST_SUITE_REGISTRATION (AssignmentTest);

void AssignmentTest::testTitle()
{
    //info2 = "";
    //CPPUNIT_ASSERT(info2.testTitle(info2));
    CPPUNIT_ASSERT_EQUAL(info2, info2.GetTitle());
}

我的作业测试.h:

#ifndef _ASSIGNMENTTEST_H
#define _ASSIGNMENTTEST_H
#include <cppunit/TestCase.h>
#include <cppunit/extensions/HelperMacros.h>
#include <vector>
#include "GetInfo.h"

class AssignmentTest : public CppUnit::TestFixture
{
    CPPUNIT_TEST_SUITE (AssignmentTest);
    CPPUNIT_TEST (testTitle);
    CPPUNIT_TEST (testDirector);
    CPPUNIT_TEST (testReleaseDate);
    CPPUNIT_TEST (testPlot);
    CPPUNIT_TEST (testRunTime);
    CPPUNIT_TEST_SUITE_END ();
private:
    GetInfo info1;
    GetInfo info2;
        GetInfo info3;
        GetInfo info4;
        GetInfo info5;
        GetInfo info6;
public:

protected:
    void testTitle();
    void testDirector();
    void testReleaseDate();
        void testPlot();
    void testRunTime();
};
#endif

我的 GetInfo.h:

#include <string>
#ifndef _GETINFO_H
#define _GETINFO_H

using namespace std;

class GetInfo
{
public:
    GetInfo();
        void    GrabMovie(void);
    void    GetTitle(void);
    void    GetDirector(void);
    void    GetReleaseDate(void);
    void    GetPlot(void);
    void    GetRunTime(void);        
private:

};
#endif
4

1 回答 1

2

你想比较什么来比较平等?现在,您正在info2info2.GetTitle(). 前者是一个对象。根据 GetInfo.h,后者返回 void —— 即,什么也没有。

很有可能,您的测试应该看起来更像

CPPUNIT_ASSERT_EQUAL("Expected Title", info2.GetTitle());

并且您所有的“获取”功能实际上应该返回您得到的任何东西。

于 2010-07-15T20:08:49.480 回答