在构建

时间:2018-05-18 11:51:53

标签: c++ c++11 testing cxxtest

我一直在尝试使用CXXTEST框架来测试计算器。在我完成了Calculator.h和Calculator.cpp文件的工作后,我启动了命令

cxxtestgen --error-printer -o test.cpp TestCalculator.h

然后我尝试构建test.cpp

g++ test.cpp

但它给了我这样的信息:

/tmp/ccgDQQr5.o: In function `TestCalculator::test_global_Calculator_Calculator()':
test.cpp:(.text._ZN14TestCalculator33test_global_Calculator_CalculatorEv[_ZN14TestCalculator33test_global_Calculator_CalculatorEv]+0x23): undefined reference to `Calculator::Calculator()'
/tmp/ccgDQQr5.o: In function `TestCalculator::test_global_Calculator_Calculator_int()':
test.cpp:(.text._ZN14TestCalculator37test_global_Calculator_Calculator_intEv[_ZN14TestCalculator37test_global_Calculator_Calculator_intEv]+0x28): undefined reference to `Calculator::Calculator(int)'
/tmp/ccgDQQr5.o: In function `TestCalculator::testSum()':
test.cpp:(.text._ZN14TestCalculator7testSumEv[_ZN14TestCalculator7testSumEv]+0x28): undefined reference to `Calculator::Calculator(int)'
test.cpp:(.text._ZN14TestCalculator7testSumEv[_ZN14TestCalculator7testSumEv]+0x39): undefined reference to `Calculator::sum(int)'
/tmp/ccgDQQr5.o: In function `TestCalculator::testSubtract()':
test.cpp:(.text._ZN14TestCalculator12testSubtractEv[_ZN14TestCalculator12testSubtractEv]+0x28): undefined reference to `Calculator::Calculator(int)'
test.cpp:(.text._ZN14TestCalculator12testSubtractEv[_ZN14TestCalculator12testSubtractEv]+0x39): undefined reference to `Calculator::subtract(int)'
/tmp/ccgDQQr5.o: In function `TestCalculator::testMul()':
test.cpp:(.text._ZN14TestCalculator7testMulEv[_ZN14TestCalculator7testMulEv]+0x28): undefined reference to `Calculator::Calculator(int)'
test.cpp:(.text._ZN14TestCalculator7testMulEv[_ZN14TestCalculator7testMulEv]+0x39): undefined reference to `Calculator::mul(int)'
collect2: error: ld returned 1 exit status

您可以在下面看到我的TestCalculator.h(由我的老师给出):

#ifndef TESTCALCULATOR_H_
#define TESTCALCULATOR_H_

#include <cxxtest/TestSuite.h>

#include "Calculator.h"

class TestCalculator : public CxxTest::TestSuite {
public:

    void setUp() {
        // objects used in test cases are created in this method
        // that is executed before all the other test methods
    }

    void test_global_Calculator_Calculator() {
        Calculator c;
        TS_ASSERT_EQUALS(c.getValue(), 0);
    }

    void test_global_Calculator_Calculator_int() {
        Calculator c(3);
        TS_ASSERT_EQUALS(c.getValue(), 3);
    }

    void testSum() {
        Calculator c(4);
        c.sum(3);
        TS_ASSERT_EQUALS(c.getValue(), 7);
    }

    void testSubtract() {
        Calculator c(5);
        c.subtract(3);
        TS_ASSERT_EQUALS(c.getValue(), 2);
    }

    void testMul() {
        Calculator c(7);
        c.mul(2);
        TS_ASSERT_EQUALS(c.getValue(), 14);
    }


};

#endif

我该如何解决?

1 个答案:

答案 0 :(得分:0)

那些未定义的引用错误意味着链接器无法找到Calculator.h中声明的函数/类的实现。由于您在Calculator.cpp文件中提供了实现,因此您还需要将此文件提供给g ++。总之,将编译命令更改为

g++ test.cpp Calculator.cpp