xtd 0.2.0
test_class.h
Go to the documentation of this file.
1 #pragma once
5 #include "../tunit_export.h"
6 #define __XTD_TUNIT_INTERNAL__
7 #include "__google_test_markers.h"
8 #undef __XTD_TUNIT_INTERNAL__
11 #include "settings.h"
13 #include "test_cleanup_attribute.h"
14 #include "test_method_attribute.h"
15 #include <xtd/date_time>
16 #include <xtd/ustring>
17 #include <vector>
18 
20 namespace xtd {
22  namespace tunit {
24  class registered_test_class;
25  class test;
26  class unit_test;
28 
39  class tunit_export_ test_class {
40  public:
42 
46  // The following variables are a hack to ensure that GoogleTestAdapter (Microsoft Visual Studio) will detect the tunit application as a google test application...
47  // See https://github.com/csoltenborn/GoogleTestAdapter/blob/master/GoogleTestAdapter/Core/GoogleTestConstants.cs
48  __unused_google_test_markers__();
49  }
51 
53  test_class(const test_class&) = default;
54  test_class& operator =(const test_class&) = default;
55  virtual ~test_class() = default;
57 
59 
63  std::chrono::milliseconds elapsed_time() const noexcept;
64 
67  xtd::ustring name() const noexcept;
68 
71  size_t test_count() const noexcept;
72 
75  size_t aborted_test_count() const noexcept;
76 
79  size_t failed_test_count() const noexcept;
80 
83  size_t ignored_test_count() const noexcept;
84 
87  size_t succeed_test_count() const noexcept;
88 
91  const xtd::date_time& start_time() const noexcept;
92 
95  const std::vector<xtd::tunit::test>& tests() const noexcept;
97 
98  protected:
100 
104  void add_class_cleanup(const xtd::tunit::test& class_cleanup) noexcept;
105 
108  void add_class_initialize(const xtd::tunit::test& class_initialize) noexcept;
109 
112  void add_test_cleanup(const xtd::tunit::test& test_cleanup) noexcept;
113 
116  void add_test_initialize(const xtd::tunit::test& test_initialize) noexcept;
117 
120  void add_test_method(const xtd::tunit::test& test) noexcept;
122 
123  private:
124  friend class xtd::tunit::test;
125  friend class xtd::tunit::unit_test;
132 
133  const xtd::tunit::test& class_cleanup() const noexcept;
134  const xtd::tunit::test& class_initialize() const noexcept;
135  const xtd::tunit::test& test_cleanup() const noexcept;
136  const xtd::tunit::test& test_initialize() const noexcept;
137  const std::vector<xtd::tunit::test>& test_methods() const noexcept;
138 
139  void run(const xtd::tunit::unit_test& unit_test);
140 
143  xtd::date_time end_time_point;
144  xtd::ustring name_;
145  xtd::date_time start_time_;
148  std::vector<xtd::tunit::test> tests_;
149  };
150  }
151 }
#define class_cleanup_(method_name)
Add class cleanup method to class test.
Definition: class_cleanup_attribute.h:52
Contains xtd::tunit::test_method_attribute class.
Represents a test method.
Definition: test.h:31
#define test_initialize_(method_name)
Helper to create a test initialize method in a test class.
Definition: test_initialize_attribute.h:46
Contains xtd::tunit::test_cleanup_attribute class.
Contains xtd::tunit::class_initialize_attribute class.
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
This attribute is use to add cleanup class method to class test attribute.
Definition: class_cleanup_attribute.h:21
Contains xtd::tunit::settings class.
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
Represents a test class.
Definition: test_class.h:39
test_class()
Creates a new test_class instance.
Definition: test_class.h:45
Represents a test initialize attribute.
Definition: test_initialize_attribute.h:16
Represents a test method attribute.
Definition: test_method_attribute.h:22
Represents an instant in time, typically expressed as a date and time of day.
Definition: date_time.h:78
This attribute is use to add initialize class method to class test attribute.
Definition: class_initialize_attribute.h:21
#define test_cleanup_(method_name)
Helper to create a test cleanup method in a test class.
Definition: test_cleanup_attribute.h:51
Contains xtd::tunit::class_cleanup_attribute class.
Represents a test cleanup attribute.
Definition: test_cleanup_attribute.h:21
Represents the registered test class.
Definition: registered_test_class.h:20
#define class_initialize_(method_name)
add initialize class method to class test.
Definition: class_initialize_attribute.h:52
The unit_test class is unit test base interface.
Definition: unit_test.h:35
Contains xtd::tunit::test_initialize_attribute class.