使用Google Test对自定义Assert函数进行单元测试

奥肯·巴鲁特(Okan Barut)

我正在使用Boost.Assert库,并具有以下自定义断言代码,需要使用Google Test框架进行单元测试:

    #include <boost/assert.hpp>
    #define ASSERT(expr)                BOOST_ASSERT(expr)
    #define ASSERT_MSG(expr, msg)       BOOST_ASSERT_MSG(expr, msg)

    namespace boost {
        inline void assertion_failed_msg(char const* expr, char const* msg, char const* function, char const* /*file*/, long /*line*/) {
            std::cerr << "Expression '" << expr << "' is false in function '" << function << "': " << (msg ? msg : "<...>") << ".\n"
                << "Backtrace:\n" << boost::stacktrace::stacktrace() << std::endl;

            std::abort();
        }

        inline void assertion_failed(char const* expr, char const* function, char const* file, long line) {
            ::boost::assertion_failed_msg(expr, 0 /*nullptr*/, function, file, line);
        }
    } // namespace boost

目的是检查是否ASSERT( 1!=1 )使用适当的错误代码和错误日志消息终止程序。

我知道Google测试,死亡测试。我具有以下结构,适合我的工作方式:

void assert_death_test() 
{
    ASSERT( 1!=1 );
}

TEST(unit_test_DeathTest, test_of_assert_function) {
    EXPECT_EXIT(assert_death_test(), ::testing::KilledBySignal(SIGABRT), "Stuff hit the fan.");
}

由于我使用的是死亡测试,因此ASSERT(...)不会终止单元测试,并且死亡测试会注意到程序退出并显示一些日志消息。问题是这样的:

Death test: assert_death_test()
    Result: died but not with expected error.
  Expected: contains regular expression "Stuff hit the fan."
Actual msg:
[  DEATH   ] Expression '1!=1' is false in function 'void assert_death_test()': <...>.
[  DEATH   ] Backtrace:
[  DEATH   ]  0# boost::assertion_failed_msg(char const*, char const*, char const*, char const*, long) in ./executable
[  DEATH   ]  1# boost::assertion_failed(char const*, char const*, char const*, long) in ./executable
[  DEATH   ]  2# assert_death_test() in ./executable
[  DEATH   ]  3# unit_test_DeathTest_test_of_assert_function_Test::TestBody() in ./executable
.
. // Continues with more log messages
.

由于这个问题,测试被认为是失败,而通常是成功。(断言杀死程序,并向stdout发送一条日志消息)

我怎么解决这个问题?(替代方法也适用)

有没有办法强迫测试输出成功?

奥肯·巴鲁特(Okan Barut)

该问题用以下行解决:

EXPECT_DEATH(assert_death_test(), "Expression '.*");

我的主要问题不是像@Quarra所指出的那样创建有效的正则表达式字符串。

EXPECT_DEATH也更合适,因为它会ASSERT(...)杀死程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Java对自定义日期反序列化器进行单元测试

来自分类Dev

如何使用Java对自定义日期反序列化器进行单元测试

来自分类Dev

如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

来自分类Dev

在进行单元测试时如何调用React组件的自定义方法。我正在使用打字稿

来自分类Dev

Mockito InvalidUseOfMatchersException,当尝试使用自定义回调作为参数对方法进行单元测试时

来自分类Dev

使用Google测试进行单元测试

来自分类Dev

使用自定义架构定义的Spring Ldap单元测试

来自分类Dev

如何使用JSm对Jest中的自定义元素执行单元测试

来自分类Dev

使用Google Analytic自定义变量进行A / B测试

来自分类Dev

如何解决此错误[Vue警告]:使用Jest进行单元测试时,未知的自定义元素:<nuxt-link>

来自分类Dev

如何使用gtest对std :: bind函数进行单元测试?

来自分类Dev

使用GORM函数对域对象进行单元测试

来自分类Dev

如何使用gtest对std :: bind函数进行单元测试?

来自分类Dev

如何使用 Jasmine 对 init() 函数进行单元测试?

来自分类Dev

使用Espresso对Google Maps进行单元测试

来自分类Dev

使用Google Mock进行C ++高性能单元测试?

来自分类Dev

使用spring-test-mvc对HTTP标头进行自定义测试

来自分类Dev

使用Arrange-Act-Assert进行单元测试时,是否建议标题注释?

来自分类Dev

使用实体框架进行单元测试的单元测试

来自分类Dev

如何对自定义的Jackson JsonSerializer进行单元测试?

来自分类Dev

对ngx形式的自定义模板进行单元测试

来自分类Dev

使用自定义值创建CLPlacemark进行测试

来自分类Dev

对使用RTOS的项目进行单元测试

来自分类Dev

使用Shim for ZipFile进行单元测试

来自分类Dev

使用NSURLSession进行单元测试

来自分类Dev

使用ReSharper进行AngularJS单元测试

来自分类Dev

使用ReSharper进行AngularJS单元测试

来自分类Dev

使用StaticLoggerBinder对类进行单元测试

来自分类Dev

Django使用ForeignKey进行单元测试

Related 相关文章

  1. 1

    如何使用Java对自定义日期反序列化器进行单元测试

  2. 2

    如何使用Java对自定义日期反序列化器进行单元测试

  3. 3

    如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

  4. 4

    在进行单元测试时如何调用React组件的自定义方法。我正在使用打字稿

  5. 5

    Mockito InvalidUseOfMatchersException,当尝试使用自定义回调作为参数对方法进行单元测试时

  6. 6

    使用Google测试进行单元测试

  7. 7

    使用自定义架构定义的Spring Ldap单元测试

  8. 8

    如何使用JSm对Jest中的自定义元素执行单元测试

  9. 9

    使用Google Analytic自定义变量进行A / B测试

  10. 10

    如何解决此错误[Vue警告]:使用Jest进行单元测试时,未知的自定义元素:<nuxt-link>

  11. 11

    如何使用gtest对std :: bind函数进行单元测试?

  12. 12

    使用GORM函数对域对象进行单元测试

  13. 13

    如何使用gtest对std :: bind函数进行单元测试?

  14. 14

    如何使用 Jasmine 对 init() 函数进行单元测试?

  15. 15

    使用Espresso对Google Maps进行单元测试

  16. 16

    使用Google Mock进行C ++高性能单元测试?

  17. 17

    使用spring-test-mvc对HTTP标头进行自定义测试

  18. 18

    使用Arrange-Act-Assert进行单元测试时,是否建议标题注释?

  19. 19

    使用实体框架进行单元测试的单元测试

  20. 20

    如何对自定义的Jackson JsonSerializer进行单元测试?

  21. 21

    对ngx形式的自定义模板进行单元测试

  22. 22

    使用自定义值创建CLPlacemark进行测试

  23. 23

    对使用RTOS的项目进行单元测试

  24. 24

    使用Shim for ZipFile进行单元测试

  25. 25

    使用NSURLSession进行单元测试

  26. 26

    使用ReSharper进行AngularJS单元测试

  27. 27

    使用ReSharper进行AngularJS单元测试

  28. 28

    使用StaticLoggerBinder对类进行单元测试

  29. 29

    Django使用ForeignKey进行单元测试

热门标签

归档