0

GoogleTest フレームワークを使用して、TDD を学習しています。Gtest のビルドに成功し、サンプルをビルドして実行することができました。しかし、私が書いた簡単なサンプルを試してみると、コンパイル エラーが発生します。

ソースと使用したビルド コマンドは次のとおりです。

// ################################################
//proj1.h
#ifndef  __SCRATCH_PROJ1_H
#define  __SCRATCH_PROJ1_H

int addOne(int i);

#endif /*__SCRATCH_PROJ1_H */

// ################################################

//proj1.cpp
#include "proj1.h"

int addOne(int i){
    return i+1;
}


// ################################################
//proj1_unittest.cpp

#include "proj1.h"
#include "gtest/gtest.h"

// Test Function
TEST(addOneTest, Positive) {
    EXPECT_EQ(1,addOneTest(0));            // <- Line # 24
    EXPECT_EQ(2,addOneTest(1));            // <- Line # 25
    EXPECT_EQ(40320, addOneTest(40319));   // <- Line # 26
}

TEST(addOneTest, Negative) {
    EXPECT_FALSE(addOneTest(-1));          // <- Line # 30
}


GTEST_API_ int main(int argc, char **argv) {
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

コンソール出力:

g++ -isystem ${GTEST_DIR}/include -pthread -c /home/user1/scratch/proj1_unittest.cpp /home/user1/scratch/proj1_unittest.cpp: メンバー関数内 'virtual void addOneTest_Positive_Test::TestBody()': /home /user1/scratch/proj1_unittest.cpp:24:5: エラー: 'addOneTest' はこのスコープで宣言されていません /home/user1/scratch/proj1_unittest.cpp:25:5: エラー: 'addOneTest' はこのスコープで宣言されていません/home/user1/scratch/proj1_unittest.cpp:26:5: エラー: 'addOneTest' はこのスコープで宣言されていませんでした /home/user1/scratch/proj1_unittest.cpp: メンバー関数内 'virtual void addOneTest_Negative_Test::TestBody()' : /home/user1/scratch/proj1_unittest.cpp:30:5: エラー: 'addOneTest' はこのスコープで宣言されていません

エラー メッセージの行番号から判断すると、EXPECT_* マクロが定義されていないようですが、コンパイル ユニットに gtest/gtest.h を含めました。

これらのエラーの原因とその修正方法は?

4

1 に答える 1

0

それが言うように、addOneTestどこにも宣言されていませんでした。addOne代わりに電話するつもりだったと思います。

于 2013-08-16T00:40:21.803 に答える