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

私のAssignmentTest.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());
}

私の割り当てTest.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

平等のために何を比較しようとしていますか?現在、あなたは と比較info2してinfo2.GetTitle()います。前者はオブジェクトです。GetInfo.h によると、後者は void を返します。つまり、何も返しません。

おそらく、あなたのテストはもっと似ているはずです

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

そして、すべての「Get」関数は、取得したものを実際に返す必要があります。

于 2010-07-15T20:08:49.480 に答える