2017-08-27 59 views
0

我剛剛開始學習googletesting,我正在玩弄它。 我想使用參數化測試來檢查一個類的函數成員返回的值是否應該是。 我已經聲明瞭一個名爲'myClass'的類,其中我使用構造函數設置了一個變量的值,並且我還有一個公共函數'retA()',它返回它的值。GoogleTest中的參數化測試無法按預期工作

然後我聲明瞭一個fixture類,其中創建了一個'myClass'對象,使用構造函數創建成員a,並將obj.retA()函數的值賦值給int值'result'。然後,我寫了一個'TEST_P',用於檢查結果是否符合我期望的結果,並安裝TEST_P。然後在主要我開始所有的測試。當我只能傳遞不應該使測試失敗的說法,我不明白爲什麼:((結果應該是3,我認爲)

請幫我清楚這件事。謝謝

我的測試失敗。

#include "stdafx.h" 
#include "gtest\gtest.h" 
#include "gmock\gmock.h" 
#include "Tests.cpp" 

class myClass 
{ 
private: 
    int a; 
public: 
    myClass() {} 
    myClass(int a) { a = this->a; } 
    void setA(int val) { a = val; } 
    int retA() { return a; } 
}; 

class myFixture : public ::testing::TestWithParam<int> 
{ 
public: 
    int result; 

    myFixture() 
    { 
     myClass obj(GetParam()); 
     result = obj.retA(); 
    } 
}; 

TEST_P(myFixture, Test1) { 
    // Inside a test, access the test parameter with the GetParam() method 
    // of the TestWithParam<T> class: 
    ASSERT_EQ(3, result); 
} 

INSTANTIATE_TEST_CASE_P(
    InstantiationName, myFixture, ::testing::Values(3); 
); 

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

} 

回答

0

你做的一切都是完全正確的期待上的小東西,很難找到...。)

在你的類測試下(myClass),在構造this是相反的。它應該看起來像這樣:

myClass(int a) { this->a = a; }