0
Qt測試框架支持比較指針列表還是我做錯了什麼?Qt單元測試:指針列表中的QCOMPARE函數
我的單元測試源如下:
QList<QString *> list1;
QList<QString *> list2;
list1.append(new QString("test"));
list2.append(new QString("test"));
QCOMPARE(list1, list2);
運行此測試後,我期待通過了測試,但測試失敗,下面的輸出:
********* Start testing of ConfigurationTest *********
Config: Using QtTest library 5.5.1, Qt 5.5.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 5.4.0 20160609)
FAIL! : ConfigurationTest::test_sample(default) Compared lists differ at index 0.
Actual (list1): <null>
Expected (list2): <null>
Loc: [../unittest/sample_test.cpp(32)]
Totals: 0 passed, 1 failed, 0 skipped, 0 blacklisted
********* Finished testing of ConfigurationTest *********
如果列表中包含非指針元素,QCOMPARE不會有任何問題,並返回「通過」輸出。
感謝KjMag快速回答。我現在明白了。實際上,這對我來說沒有什麼幫助,因爲我將源元素添加到不同位置的列表中,因此它們是完全不同的對象,但測試必須確認它們包含相同的值。在比較它們之前,我需要採取不同的方法並從指針中取出值。再次感謝! – franz
沒問題。如果您確實需要指針,請考慮編寫一個將包裝指針並定義自定義比較運算符的對象,以便比較內部指針指向的值而不是指針本身的值。 – KjMag