c++ - 在单元测试中验证 static_assert

标签 c++ unit-testing c++11 googletest

我想确保 static_assert 在单元测试中正常工作。也就是说,如果我有一个

class MyClass {static_assert(my_type_trait<T>::value, "error"); };

然后在单元测试MyClass<TypeWithTrait> myClass;应该“通过”和MyClass<TypeWithoutTrait> myClass;应该“失败”。

有没有可能做这样的事情?

最佳答案

如果你想检查某些东西是否编译失败,你必须在代码外部测试它。只需编写一个简单的文件,如:

#include "MyClass.h"

int main() { 
    MyClass<%T%> m;
}

然后编写一个单元测试,用不同的 %T% 值编译该文件。验证编译是按预期成功,还是按预期失败并在失败文本中显示有关 static_assert 的内容。

关于c++ - 在单元测试中验证 static_assert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278945/

相关文章:

php - Laravel5 中的单元测试 - 错误

asp.net - ASP.NET HttpException.GetHttpCode()返回0

c++ - 自动终止 C++11 STL 线程

c++ - 是否可以在 C++ 中使用匿名类?

java - 没有 setter/getter 的单元测试私有(private) Collection

c++11 - `auto &&i = foo();` 是什么意思

c++ - 从 Windows 上的 lib 文件中删除符号

c++ - 有没有办法从函数返回新对象或对现有对象的引用?

java - 修正斐波那契数列的迭代版本

c# - 从 c# 代码传递结构引用以调用在其原型(prototype)中接受结构引用的 c++ DLL 函数