🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
TestFramework.hpp 文件参考
#include <string>
#include <vector>
#include <sstream>
#include <functional>
#include <utility>
#include <memory>
#include <map>
#include <set>
#include <deque>
#include <list>
#include <tuple>
#include <algorithm>
#include <type_traits>
#include <typeinfo>
#include <iomanip>
#include <iosfwd>
#include <iostream>
#include <iterator>
#include <streambuf>
#include <locale>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cstdint>
#include <cstddef>
#include <cmath>
#include <limits>
#include <exception>
#include <unistd.h>

浏览该文件的源代码.

类

class  ast::testing::Test
 
struct  ast::testing::internal::TestCase
 
struct  ast::testing::internal::TestRegistrar
 
struct  ast::testing::internal::FatalTestException
 
struct  ast::testing::internal::SkippedTestException
 
class  ast::testing::internal::ScopedTrace
 
class  ast::testing::internal::SkipHelper
 
class  ast::testing::internal::FailHelper
 
class  ast::testing::internal::AssertionHelper
 

命名空间

namespace  ast
 

宏定义

#define GTEST_FLAG(name)
 
#define GTEST_SKIP()
 
#define AST_TRACE_CONCAT_(a, b)
 
#define AST_TRACE_CONCAT(a, b)
 
#define SCOPED_TRACE(message)
 
#define SUCCEED()
 
#define FAIL()
 
#define AST_GTEST_ASSERT_(expr, exprtext, fatal)
 
#define EXPECT_EQ(a, b)
 
#define ASSERT_EQ(a, b)
 
#define EXPECT_NE(a, b)
 
#define ASSERT_NE(a, b)
 
#define EXPECT_LT(a, b)
 
#define ASSERT_LT(a, b)
 
#define EXPECT_GT(a, b)
 
#define ASSERT_GT(a, b)
 
#define EXPECT_LE(a, b)
 
#define ASSERT_LE(a, b)
 
#define EXPECT_GE(a, b)
 
#define ASSERT_GE(a, b)
 
#define EXPECT_TRUE(v)
 
#define ASSERT_TRUE(v)
 
#define EXPECT_FALSE(v)
 
#define ASSERT_FALSE(v)
 
#define EXPECT_NEAR(a, b, eps)
 
#define ASSERT_NEAR(a, b, eps)
 
#define EXPECT_DOUBLE_EQ(a, b)
 
#define ASSERT_DOUBLE_EQ(a, b)
 
#define EXPECT_FLOAT_EQ(a, b)
 
#define ASSERT_FLOAT_EQ(a, b)
 
#define EXPECT_STREQ(a, b)
 
#define ASSERT_STREQ(a, b)
 
#define AST_GTEST_EXPECT_THROW_(stmt, ex, fatal)
 
#define EXPECT_THROW(stmt, ex)
 
#define ASSERT_THROW(stmt, ex)
 
#define AST_GTEST_EXPECT_NO_THROW_(stmt, fatal)
 
#define EXPECT_NO_THROW(stmt)
 
#define ASSERT_NO_THROW(stmt)
 
#define TEST(suite, name)
 
#define TEST_F(fixture, name)
 

枚举

enum class  ast::testing::internal::TagColor {
  kDefault , kGreen , kRed , kYellow ,
  kCyan , kMagenta
}
 

函数

void ast::testing::InitGoogleTest (int *argc, char **argv)
 
bool ast::testing::internal::stdout_is_tty ()
 
void ast::testing::internal::begin_color (TagColor c)
 
void ast::testing::internal::end_color ()
 
void ast::testing::internal::emit_tag (TagColor c, const char *tag)
 
std::vector< TestCase > & ast::testing::internal::registry ()
 
TestCase *& ast::testing::internal::current_test ()
 
void ast::testing::internal::report_current_failure (const std::string &msg)
 
void ast::testing::internal::mark_skipped ()
 
template<typename T >
auto ast::testing::internal::stream_value (std::ostream &os, const T &v, int) -> decltype(os<< v, void())
 
template<typename T >
void ast::testing::internal::stream_value (std::ostream &, const T &, long)
 
bool ast::testing::internal::streq (const char *a, const char *b)
 
template<typename A , typename B >
bool ast::testing::internal::streq (const A &a, const B &b)
 
bool ast::testing::internal::double_eq (double a, double b)
 
bool ast::testing::internal::is_near (double a, double b, double eps)
 
int ast::testing::internal::run_all_tests ()
 
int RUN_ALL_TESTS ()
 

详细描述

轻量的、头文件式、兼容 GoogleTest 的测试框架。

提供单元测试所依赖的 GoogleTest 接口子集,让 test/ 目录下的 测试可以编译运行,而不必依赖外部的 gtest 库:

  • TEST() / TEST_F() 测试与夹具注册
  • EXPECT_* / ASSERT_* 断言宏(支持 "<<" 流式输出)
  • GTEST_SKIP()、GTEST_MAIN()、RUN_ALL_TESTS()
  • testing::Test、testing::InitGoogleTest()、testing::GTEST_FLAG()

本框架有意保持头文件式且使用 C++11:每个测试源码文件由构建系统 单独编译为一个可执行文件,因此测试注册表和运行器可以完全放在 此头文件中,无需额外的库。

作者
axel
日期
2026-09-01

SpaceAST项目(https://github.com/space-ast/ast) 本软件基于 Apache 2.0 开源许可证分发。 您可在遵守许可证条款的前提下使用、修改和分发本软件。 许可证全文请见:

http://www.apache.org/licenses/LICENSE-2.0

重要须知: 软件按"现有状态"提供,无任何明示或暗示的担保条件。 除非法律要求或书面同意,作者与贡献者不承担任何责任。 使用本软件所产生的风险,需由您自行承担。

宏定义说明

◆ ASSERT_DOUBLE_EQ

#define ASSERT_DOUBLE_EQ ( a,
b )
值:
AST_GTEST_ASSERT_(::testing::internal::double_eq((a), (b)), #a " == " #b, true)

◆ ASSERT_EQ

#define ASSERT_EQ ( a,
b )
值:
AST_GTEST_ASSERT_((a) == (b), #a " == " #b, true)

◆ ASSERT_FALSE

#define ASSERT_FALSE ( v)
值:
AST_GTEST_ASSERT_(!static_cast<bool>(v), #v, true)

◆ ASSERT_FLOAT_EQ

#define ASSERT_FLOAT_EQ ( a,
b )
值:
AST_GTEST_ASSERT_(::testing::internal::double_eq((double)(a), (double)(b)), #a " == " #b, true)

◆ ASSERT_GE

#define ASSERT_GE ( a,
b )
值:
AST_GTEST_ASSERT_((a) >= (b), #a " >= " #b, true)

◆ ASSERT_GT

#define ASSERT_GT ( a,
b )
值:
AST_GTEST_ASSERT_((a) > (b), #a " > " #b, true)

◆ ASSERT_LE

#define ASSERT_LE ( a,
b )
值:
AST_GTEST_ASSERT_((a) <= (b), #a " <= " #b, true)

◆ ASSERT_LT

#define ASSERT_LT ( a,
b )
值:
AST_GTEST_ASSERT_((a) < (b), #a " < " #b, true)

◆ ASSERT_NE

#define ASSERT_NE ( a,
b )
值:
AST_GTEST_ASSERT_((a) != (b), #a " != " #b, true)

◆ ASSERT_NEAR

#define ASSERT_NEAR ( a,
b,
eps )
值:
AST_GTEST_ASSERT_(::testing::internal::is_near((a), (b), (eps)), #a " near " #b, true)

◆ ASSERT_NO_THROW

#define ASSERT_NO_THROW ( stmt)
值:
AST_GTEST_EXPECT_NO_THROW_(stmt, true)

◆ ASSERT_STREQ

#define ASSERT_STREQ ( a,
b )
值:
AST_GTEST_ASSERT_(::testing::internal::streq((a), (b)), #a " == " #b, true)

◆ ASSERT_THROW

#define ASSERT_THROW ( stmt,
ex )
值:
AST_GTEST_EXPECT_THROW_(stmt, ex, true)

◆ ASSERT_TRUE

#define ASSERT_TRUE ( v)
值:
AST_GTEST_ASSERT_(static_cast<bool>(v), #v, true)

◆ AST_GTEST_ASSERT_

#define AST_GTEST_ASSERT_ ( expr,
exprtext,
fatal )
值:
(::testing::internal::AssertionHelper((expr), __FILE__, __LINE__, (exprtext), (fatal)))

◆ AST_GTEST_EXPECT_NO_THROW_

#define AST_GTEST_EXPECT_NO_THROW_ ( stmt,
fatal )
值:
do { \
try { (void)(stmt); } \
catch (...) { \
::testing::internal::report_current_failure( \
std::string("Unexpected exception from: ") + #stmt); \
if (fatal) return; \
} \
} while (0)

◆ AST_GTEST_EXPECT_THROW_

#define AST_GTEST_EXPECT_THROW_ ( stmt,
ex,
fatal )
值:
do { \
bool ok_ = false; \
try { (void)(stmt); } \
catch (const ex&) { ok_ = true; } \
catch (...) {} \
if (!ok_) { \
::testing::internal::report_current_failure( \
std::string("Expected exception ") + #ex + " from: " + #stmt); \
if (fatal) return; \
} \
} while (0)

◆ AST_TRACE_CONCAT

#define AST_TRACE_CONCAT ( a,
b )
值:
#define AST_TRACE_CONCAT_(a, b)
记录一条跟踪信息,便于定位失败位置。 使用两级拼接,先展开 LINE 再拼接为变量名;否则直接 ##__LINE__ 会拼成 字面 "___LINE__",同一作用域多次使用 SCOPED_TRACE ...
定义 TestFramework.hpp:472

◆ AST_TRACE_CONCAT_

#define AST_TRACE_CONCAT_ ( a,
b )
值:
a##b

记录一条跟踪信息,便于定位失败位置。 使用两级拼接,先展开 LINE 再拼接为变量名;否则直接 ##__LINE__ 会拼成 字面 "___LINE__",同一作用域多次使用 SCOPED_TRACE 会产生重定义。

◆ EXPECT_DOUBLE_EQ

#define EXPECT_DOUBLE_EQ ( a,
b )
值:
AST_GTEST_ASSERT_(::testing::internal::double_eq((a), (b)), #a " == " #b, false)

◆ EXPECT_EQ

#define EXPECT_EQ ( a,
b )
值:
AST_GTEST_ASSERT_((a) == (b), #a " == " #b, false)

◆ EXPECT_FALSE

#define EXPECT_FALSE ( v)
值:
AST_GTEST_ASSERT_(!static_cast<bool>(v), #v, false)

◆ EXPECT_FLOAT_EQ

#define EXPECT_FLOAT_EQ ( a,
b )
值:
AST_GTEST_ASSERT_(::testing::internal::double_eq((double)(a), (double)(b)), #a " == " #b, false)

◆ EXPECT_GE

#define EXPECT_GE ( a,
b )
值:
AST_GTEST_ASSERT_((a) >= (b), #a " >= " #b, false)

◆ EXPECT_GT

#define EXPECT_GT ( a,
b )
值:
AST_GTEST_ASSERT_((a) > (b), #a " > " #b, false)

◆ EXPECT_LE

#define EXPECT_LE ( a,
b )
值:
AST_GTEST_ASSERT_((a) <= (b), #a " <= " #b, false)

◆ EXPECT_LT

#define EXPECT_LT ( a,
b )
值:
AST_GTEST_ASSERT_((a) < (b), #a " < " #b, false)

◆ EXPECT_NE

#define EXPECT_NE ( a,
b )
值:
AST_GTEST_ASSERT_((a) != (b), #a " != " #b, false)

◆ EXPECT_NEAR

#define EXPECT_NEAR ( a,
b,
eps )
值:
AST_GTEST_ASSERT_(::testing::internal::is_near((a), (b), (eps)), #a " near " #b, false)

◆ EXPECT_NO_THROW

#define EXPECT_NO_THROW ( stmt)
值:
AST_GTEST_EXPECT_NO_THROW_(stmt, false)

◆ EXPECT_STREQ

#define EXPECT_STREQ ( a,
b )
值:
AST_GTEST_ASSERT_(::testing::internal::streq((a), (b)), #a " == " #b, false)

◆ EXPECT_THROW

#define EXPECT_THROW ( stmt,
ex )
值:
AST_GTEST_EXPECT_THROW_(stmt, ex, false)

◆ EXPECT_TRUE

#define EXPECT_TRUE ( v)
值:
AST_GTEST_ASSERT_(static_cast<bool>(v), #v, false)

◆ FAIL

#define FAIL ( )
值:
(::testing::internal::FailHelper(__FILE__, __LINE__))

立即令当前测试失败(支持 "<<" 流式输出)。

◆ GTEST_FLAG

#define GTEST_FLAG ( name)
值:
FLAGS_gtest_##name

◆ GTEST_SKIP

#define GTEST_SKIP ( )
值:
(::testing::internal::SkipHelper())

跳过当前测试(支持 "<<" 流式输出)。

◆ SCOPED_TRACE

#define SCOPED_TRACE ( message)
值:
::testing::internal::ScopedTrace AST_TRACE_CONCAT(_gtest_scoped_trace_, __LINE__)(__FILE__, __LINE__, (message))

◆ SUCCEED

#define SUCCEED ( )
值:
do { } while (0)

标记为成功(无操作)。

◆ TEST

#define TEST ( suite,
name )
值:
static void suite##_##name##_TestBody(); \
static ::testing::internal::TestRegistrar suite##_##name##_Reg( \
#suite, #name, [] { suite##_##name##_TestBody(); }); \
static void suite##_##name##_TestBody()

◆ TEST_F

#define TEST_F ( fixture,
name )
值:
class fixture##_##name##_Test : public fixture { \
public: \
void TestBody() override; \
}; \
static ::testing::internal::TestRegistrar fixture##_##name##_Reg( \
#fixture, #name, [] { \
std::unique_ptr<::testing::Test> obj_(new fixture##_##name##_Test()); \
try { \
obj_->SetUp(); \
obj_->TestBody(); \
} \
catch (const ::testing::internal::FatalTestException&) {} \
catch (const ::testing::internal::SkippedTestException&) {} \
obj_->TearDown(); \
}); \
void fixture##_##name##_Test::TestBody()
A_ALWAYS_INLINE const char * _(const char *msgid)
翻译文本(无上下文)
定义 I18n.hpp:88