我想测试我的应用程序是否返回 nullptr 唯一 ptr。我尝试了一些东西,但没有通过编译器。我希望有人已经尝试过并找到了一种方法来完成这项工作。我尝试过的一些事情:
std::unique_ptr<SomeClass> some_class_ptr;
CPPUNIT_ASSERT_EQUAL(std::unique_ptr<SomeClass>(), some_class_ptr);
给出:libcppunit/include/cppunit/TestAssert.h|49|error: no match for 'operator<<' in 'ost << x'|
在 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|error: no matching function for call to 'assertEquals(std::nullptr_t, std::unique_ptr&, CppUnit::SourceLine, const char [1])'|
CPPUNIT_ASSERT_EQUAL(nullptr, some_class_ptr.get());
给出:/tests/SomeTestClass.cpp|432|错误:没有匹配函数调用 'assertEquals(std::nullptr_t, std::unique_ptr::pointer, CppUnit::SourceLine, const char [1])'|
我认为第一个应该是正确的,但它没有编译。谁能给我一个正确的结构?