A small C++ library for asserting in unit tests. It was born out of frustration with the CppUnitTest framework used by the Visual Studio Native Unit Test projects and meant to replace its rudimentary Assert class with a TDD-focused, rich, modern assertion APIs comparable to Xunit.Assert's.
Add the simply.assert NuGet package to your Visual C++ Native Unit Test project using the Package Manager Console or using the Package Manager Dialog.
Install-Package simply.assert
Include the simply/assert.h
header to your C++ file and use the simply
namespace.
#include <simply/assert.h>
using namespace simply;
Use assert functions.
// fail (with overloads for std::string and std::wstring)
assert::fail("foo");
// bool
assert::is_true(true);
assert::is_false(false);
// equality
assert::is_equal(42, 42);
assert::is_not_equal(0, 42);
// exceptions
unique_ptr<exception> e = assert::throws<exception>([] { throw exception("foo"}; );
// null (with overloads for typed and void pointers)
assert::is_null(nullptr);
assert::is_not_null(reinterpret_cast<void*>(0x42));
// string (with overloads for string, wstring, char* and wchar_t*)
size_t position = assert::find("bar", "foo bar baz");
assert::is_equal("foo", "foo");
assert::is_not_equal("foo", "bar");
// type traits
assert::is_abstract<foo>();
assert::is_base_of<foo, bar>();
assert::is_concrete<foo>();
assert::is_convertible<from, to>(bool expected = true);
assert::is_copy_assignable<foo>();
assert::is_copy_constructible<foo>();
assert::is_destructible();
assert::is_same<foo, foo>();
From Visual Studio 2017:
- Open
simply.assert.sln
- Select Build Solution from the Build menu
- To switch build between
x86
andx64
platforms, select Configuration Manager from the Build menu and change the Active Solution Configuration
From Developer Command Prompt for VS2017:
msbuild simply.assert.sln /p:Platform=x86
msbuild simply.assert.sln /p:Platform=x64
From Visual Studio 2015:
- Select Run / All Tests from the Test menu
- To switch test execution between
x86
andx64
platform, select Test Settings from the Test menu and change the Default Processor Architecture.
From Developer Command Prompt for VS2017:
vstest.console bin\debug\Win32\test.dll /Platform:x86
vstest.console bin\debug\x64\test.dll /Platform:x64 /inIsolation