c++ - 如何正确地对 constexpr 函数进行单元测试

标签 c++ unit-testing constexpr

如果我有一个 constexpr 函数,是否应该同时进行运行时验证和编译时验证?

如果只有编译时检查static_assert,那么该函数将不会被包含在任何代码覆盖率统计中。但是,如果只有运行时检查,则无法验证该函数是否在 constexpr 上下文中实际工作。

简而言之,问题是是否需要运行时单元测试 static_assert 来测试同一事物。

最佳答案

答案已经存在

https://codereview.stackexchange.com/questions/195282/constexpr-unit-tests-and-asserts

// assertion checking failure
inline constexpr auto your_assert_data(bool isOkay, std::string_view message)
{
    if (!isOkay)
        throw std::logic_error{message};
}

根据你的问题,你没有尝试过任何东西 所以也看看这个

https://blog.trailofbits.com/2019/06/27/use-constexpr-for-faster-smaller-and-safer-code/

关于c++ - 如何正确地对 constexpr 函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180520/

相关文章:

c++ - 如何在 C++11 中初始化 std::vector<std::string> 的静态 constexpr 成员?

c++ - GCC在32位机器上编译程序的方式不同

android - 在 Android 中测试自定义 ContentProvider

ruby-on-rails - 在 Rails 中引用相同类型的装置

unit-testing - 在测试中什么是经过验证的假货?

c++ - 是否可以测试 constexpr 函数是否在编译时进行评估?

c++ - 在编译时初始化 c++ std::bitset

c++ - 为什么虚拟关键字 "persistent"贯穿 C++ 的整个层次结构?

c++ - COM 中的 C++ 函数指针有问题

c# - 如何将字节数组从 CSharp 客户端应用程序传递到 ATL COM 对象