15 #ifndef INCG_IRIS_IUTEST_UTIL_VC_UNITTEST_HPP_5CA7C30C_2D2A_40A1_A9DE_83EAB4527787_
16 #define INCG_IRIS_IUTEST_UTIL_VC_UNITTEST_HPP_5CA7C30C_2D2A_40A1_A9DE_83EAB4527787_
20 #include <CppUnitTest.h>
21 #include "../../include/iutest_prod.hpp"
22 #include "../../include/util/iutest_util_tests.hpp"
27 #ifdef IUTEST_USE_GTEST
32 #define IIUT_TEST_P_ TEST_P
34 #ifdef IIUT_TYPED_TEST_
35 # undef IIUT_TYPED_TEST_
37 #define IIUT_TYPED_TEST_ TYPED_TEST
39 #ifdef IIUT_TYPED_TEST_P_
40 # undef IIUT_TYPED_TEST_P_
42 #define IIUT_TYPED_TEST_P_ TYPED_TEST_P
54 #define IUTEST(testsuite_, testname_) \
55 IUTEST_VCUNIT_I(testsuite_, testname_, testsuite_##testname_##_class, testsuite_##_##testname_); \
56 IUTEST_TEST(testsuite_, testname_)
61 #define IUTEST_F(testfixture_, testname_) \
62 IUTEST_VCUNIT_I(testfixture_, testname_, testfixture_##testname_##_class, testfixture_##_##testname_); \
63 IUTEST_TEST_F_(testfixture_, testname_)
68 #define IUTEST_P(testfixture_, testname_) \
69 IUTEST_VCUNIT_I(testfixture_, testname_, testfixture_##testname_##_class, testfixture_##_##testname_); \
70 IUTEST_TEST_P_(testfixture_, testname_)
72 #ifdef IUTEST_TYPED_TEST
73 # undef IUTEST_TYPED_TEST
75 #define IUTEST_TYPED_TEST(testfixture_, testname_) \
76 IUTEST_VCUNIT_I(testfixture_, testname_, testfixture_##testname_##_class, testfixture_##_##testname_); \
77 IUTEST_TYPED_TEST_(testfixture_, testname_)
79 #ifdef IUTEST_TYPED_TEST_P
80 # undef IUTEST_TYPED_TEST_P
82 #define IUTEST_TYPED_TEST_P(testfixture_, testname_) \
83 IUTEST_VCUNIT_I(testfixture_, testname_, testfixture_##testname_##_class, testfixture_##_##testname_); \
84 IIUT_TYPED_TEST_P_(testfixture_, testname_)
87 #define IUTEST_VCUNIT_I(testsuite_, testname_, className, methodName) \
88 IUTEST_VCUNIT_TEST_CLASS(className) { \
89 public: TEST_METHOD(methodName) { \
90 IUTEST_VCUNIT_EXEC_(testsuite_, testname_); } \
91 IIUT_VCUNIT_METHOD_ATTRIBUTE(testsuite_, methodName) \
105 #define IIUT_VCUNIT_METHOD_ATTRIBUTE(testsuite_, methodName) \
106 BEGIN_TEST_METHOD_ATTRIBUTE(methodName) \
107 TEST_METHOD_ATTRIBUTE(L"TestSuite", L#testsuite_) \
108 END_TEST_METHOD_ATTRIBUTE()
110 #define IUTEST_VCUNIT_EXEC_(testsuite_, testname_) \
111 Body( "*" #testsuite_ "." #testname_ "*" )
113 #define IUTEST_VCUNIT_TEST_CLASS(className) \
114 ONLY_USED_AT_NAMESPACE_SCOPE class className : public ::iuutil::VisualStudio::TestClass<className>
119 namespace VisualStudio
123 class TestClass :
public ::Microsoft::VisualStudio::CppUnitTestFramework::TestClass<T>
125 typedef ::Microsoft::VisualStudio::CppUnitTestFramework::Logger Logger;
127 void Body(
const char* filter)
140 class VCCppUnitTestLogger :
public ::iutest::detail::iuLogger
142 typedef ::Microsoft::VisualStudio::CppUnitTestFramework::Logger Logger;
144 virtual void voutput(
const char* fmt, va_list va)
146 int length = _vscprintf(fmt, va);
152 char* buf =
new char [length];
153 vsprintf_s(buf, length, fmt, va);
157 int pos = m_log.find(
'\n');
159 Logger::WriteMessage(m_log.substr(0, pos).c_str());
160 m_log = m_log.substr(pos+1);
161 pos = m_log.find(
'\n');
174 VCCppUnitTestPartResultReporter()
179 virtual ~VCCppUnitTestPartResultReporter()
187 if( result.failed() )
191 wchar_t buf2[MAX_PATH];
192 ::mbstowcs_s(&size, buf1,
sizeof(buf1)/
sizeof(buf1[0]), result.message(), _TRUNCATE);
193 ::mbstowcs_s(&size, buf2,
sizeof(buf2)/
sizeof(buf2[0]), result.file_name(), _TRUNCATE);
194 ::Microsoft::VisualStudio::CppUnitTestFramework::Assert::Fail(buf1
195 , &Microsoft::VisualStudio::CppUnitTestFramework::__LineInfo(buf2,
"", result.line_number()) );
204 : m_default_printer(default_printer)
206 virtual ~VCCppUnitResultPrinter()
208 delete m_default_printer;
222 virtual void OnTestStart(const ::iutest::TestInfo& test_info)
226 virtual void OnTestPartResult(const ::iutest::TestPartResult& test_part_result)
230 virtual void OnTestEnd(const ::iutest::TestInfo& test_info)
251 static ::iutest::TestEventListener* SetUp()
253 static ::iutest::TestEventListener* p = NULL;
258 if( default_printer == NULL )
262 p =
new VCCppUnitResultPrinter(default_printer);
269 inline void SetUpCppUnitTest()
272 static VCCppUnitTestPartResultReporter fake;
273 #ifndef IUTEST_USE_GTEST
274 static VCCppUnitTestLogger logger;
275 ::iutest::detail::iuConsole::SetLogger(&logger);
276 ::iutest::UnitTestSource::GetInstance().Initialize();
278 VCCppUnitResultPrinter::SetUp();
空のイベントリスナー
Definition: iutest_listener.hpp:102
virtual void OnTestPartResult(const TestPartResult &) IUTEST_CXX_OVERRIDE
テスト失敗時に呼ばれます
Definition: iutest_listener.hpp:111
イベントリスナー
Definition: iutest_listener.hpp:64
virtual void OnTestEnd(const TestInfo &test_info)=0
テスト終了時にに呼ばれます
virtual void OnTestIterationEnd(const UnitTest &test, int iteration)=0
単体テスト終了時に毎回呼ばれます
virtual void OnEnvironmentsTearDownEnd(const UnitTest &test)=0
グローバル環境設定 TearDown 前に呼ばれます
virtual void OnTestSuiteStart(const TestSuite &test_suite)
TestSuite 開始時に呼ばれます
Definition: iutest_listener.hpp:76
virtual void OnTestPartResult(const TestPartResult &test_part_result)=0
テスト失敗時に呼ばれます
virtual void OnTestProgramStart(const UnitTest &test)=0
テストプログラム開始時に呼ばれます
virtual void OnTestSuiteEnd(const TestSuite &test_suite)
TestSuite 終了時にに呼ばれます
Definition: iutest_listener.hpp:86
virtual void OnTestIterationStart(const UnitTest &test, int iteration)=0
単体テスト開始時に毎回呼ばれます
virtual void OnTestStart(const TestInfo &test_info)=0
テスト開始時に呼ばれます
virtual void OnTestProgramEnd(const UnitTest &test)=0
テストプログラム終了時に呼ばれます
virtual void OnEnvironmentsSetUpEnd(const UnitTest &test)=0
グローバル環境設定 SetUp 後に呼ばれます
virtual void OnEnvironmentsSetUpStart(const UnitTest &test)=0
グローバル環境設定 SetUp 前に呼ばれます
virtual void OnEnvironmentsTearDownStart(const UnitTest &test)=0
グローバル環境設定 TearDown 前に呼ばれます
イベントリスナーの管理クラス
Definition: iutest_listener.hpp:169
TestEventListener * Release(TestEventListener *listener)
リスナーの解放
Definition: iutest_listener.hpp:184
void Append(TestEventListener *listener)
リスナーの追加
Definition: iutest_listener.hpp:179
TestEventListener * default_result_printer() const IUTEST_CXX_NOEXCEPT_SPEC
デフォルト出力リスナーの取得
Definition: iutest_listener.hpp:201
static UnitTest * GetInstance()
UnitTest インスタンスの取得
Definition: iutest_core.hpp:43
TestEventListeners & listeners() const
Definition: iutest_core.hpp:123
#define IUTEST_FLAG(name)
フラグセット
Definition: iutest_env.hpp:57
#define IUTEST_RUN_ALL_TESTS()
すべてのテストを実行する
Definition: iutest.hpp:160
iutest utility namespace
Definition: iutest_util.hpp:36