簡體   English   中英

Googletest編譯錯誤:未在此范圍內聲明“ xyzTest”

[英]Googletest compilation errors: ‘xyzTest’ was not declared in this scope

我正在使用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。

是什么導致這些錯誤-以及如何解決?

如此說來, addOneTest並未在任何地方聲明。 我猜你是想打電話給addOne

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM