gpt4 book ai didi

c++ - std::unique_ptr 上的 CPPUNIT_ASSERT_EQUAL

转载 作者:太空狗 更新时间:2023-10-29 20:44:40 30 4
gpt4 key购买 nike

我想测试我的应用程序是否返回一个 nullptr 唯一指针。我尝试了一些东西,但没有通过编译器。我希望有人已经尝试并找到了一种方法来完成这项工作。我尝试过的一些事情:

std::unique_ptr<SomeClass> some_class_ptr;

CPPUNIT_ASSERT_EQUAL(std::unique_ptr<SomeClass>(), some_class_ptr);

给出:libcppunit/include/cppunit/TestAssert.h|49|错误:‘ost << x’中的‘operator<<’不匹配|

内部 TestAssert.h:

template <class T>
void assertEquals( const T& expected,
const T& actual,
SourceLine sourceLine,
const std::string &message )
{
if ( !assertion_traits<T>::equal(expected,actual) ) // lazy toString conversion...
{
Asserter::failNotEqual( assertion_traits<T>::toString(expected),
assertion_traits<T>::toString(actual),
sourceLine,
message );
}
}

CPPUNIT_ASSERT_EQUAL(nullptr, some_class_ptr);

给出:/tests/SomeTestClass.cpp|432|错误:没有匹配函数来调用'assertEquals(std::nullptr_t, std::unique_ptr&, CppUnit::SourceLine, const char [1])'|


CPPUNIT_ASSERT_EQUAL(nullptr, some_class_ptr.get());

给出:/tests/SomeTestClass.cpp|432|error:没有匹配函数调用'assertEquals(std::nullptr_t, std::unique_ptr::pointer, CppUnit::SourceLine, const char [1])' |


我认为第一个应该是正确的,但它没有编译。谁能给我一个正确的结构?

最佳答案

CPPUNIT_ASSERT_EQUAL requires its arguments to be of exactly the same type.由于您不需要能够输出 nullptr 参数的表示,因此您可以只使用 CPPUNIT_ASSERT:

CPPUNIT_ASSERT(nullptr == some_class_ptr);

CPPUNIT_ASSERT(!some_class_ptr);

关于c++ - std::unique_ptr 上的 CPPUNIT_ASSERT_EQUAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12564871/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com