C ++ CppUnitTest (CPPUNIT_ASSERT_EQUAL) - PullRequest
1 голос
/ 16 июля 2010

Я пытаюсь провести некоторое тестирование CppUnit в моей программе с использованием Ubuntu NetBeans, но продолжаю сталкиваться с подобными ошибками (недопустимое использование выражения 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

My 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());
}

My AssignmentTest.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

1 Ответ

2 голосов
/ 16 июля 2010

Что вы пытаетесь сравнить на равенство?Прямо сейчас вы сравниваете info2 с info2.GetTitle().Бывший объект.Последний, согласно GetInfo.h, возвращает void - то есть, ничего.

Скорее всего, ваш тест должен выглядеть как

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

и все ваши функции "Get"должен на самом деле вернуть все, что вы получаете.

...