#c #linux #googletest
#c #linux #googletest
Вопрос:
Я пытаюсь реализовать чрезвычайно простой пример GoogleTest в VSCode в Linux, и я получаю некоторые странные ошибки, которые я не могу найти в Интернете. Когда я пытаюсь фактически определить тесты, которые будут выполняться — «‘
#include <limits.h>
#include "gtest/gtest.h"
#include </home/tester/src/Multiply.h>
class MultiplyTest : public ::testing::Test {
protected:
virtual void SetUp() {
}
virtual void TearDown() {
}
};
TEST_F(MultiplyTest,twoValues){
const int x = 4;
const int y = 5;
Multiply multiply;
EXPECT_EQ(20,multiply.twoValues(x,y));
EXPECT_EQ(6,multiply.twoValues(2,3));
}
«‘
Ошибки выдаются в частях TEST_F и EXPECT_EQ, в частности, говорится, что TEST_F — это «это объявление не имеет класса хранилища или спецификатора типа», а EXPECT_EQ — это «класс «testing::internal::EqHelper» не имеет члена «Сравнить». »
Буду признателен за любую помощь.
Вот мое умножение.файл заголовка h:
#ifndef _MULTIPLY_HPP_
#define _MULTIPLY_HPP_
class Multiply{
public:
static int twoValues(const int x, const int y);
};
#endif
и мой makefile:
CXX = gcc CXXFLAGS = -g -L/opt/gtest/lib -lgtest -lgtest_main -lpthread INCS = -I./ -I../../src -I/opt/gtest/include OBJS = ../../src/Addition.o Addition_Test.o ../../src/Multiply.o Multiply_Test.o testAll: $(OBJS) $(CXX) $(CXXFLAGS) $(INCS) -o testAll Main_TestAll.cpp $(OBJS) .cpp.o: $(CXX) $(CXXFLAGS) -c
lt; -o $@ $(INCS)
clean:
rm testAll *.o testAll.xml
В настоящее время я запускаю gcc 7.3.1, если это поможет.
Комментарии:
1. не удается воспроизвести
2. Вы забыли закрыть a
namespace
в Multiply.h ?3. Может быть, вы хотите
CXX = g