このように記載すれば、製品のソースコードと、テストクラスのソースコードを分離できます。
#include "box.h" #include <climits> #include <cassert> #include <iostream> class Test { public: Test() { Run(); } static void Run() { // 正常ケース assert(Test(0,0,0,0)); // 異常ケース assert(Test(2,2,2,100)); // 例外がスローされるケース assert(Test(INT_MAX, INT_MAX, INT_MAX, INT_MAX)); } static bool Test(int x, int y, int z, int r) { try { //検証したいコードをここに記載する } catch (std::exception& ex) { return false; } } }; static const Test test;