Unit testing 如何编写单元测试来验证编译错误?
我正在尝试编写一个测试来验证编译错误。它是关于为字符串类型属性分配一个数字。但由于这是一个编译错误,单元测试代码甚至不会在一开始就被编译。有人对如何做到这一点有什么建议吗 我在想,也许我可以在运行时分配这个数字,然后检查是否抛出了某些异常?但我不知道该怎么做Unit testing 如何编写单元测试来验证编译错误?,unit-testing,Unit Testing,我正在尝试编写一个测试来验证编译错误。它是关于为字符串类型属性分配一个数字。但由于这是一个编译错误,单元测试代码甚至不会在一开始就被编译。有人对如何做到这一点有什么建议吗 我在想,也许我可以在运行时分配这个数字,然后检查是否抛出了某些异常?但我不知道该怎么做 提前谢谢 如果我理解正确,您可能有一些代码无法编译,您希望编写单元测试,如果代码确实无法编译,那么单元测试将失败。如果是这种情况,那么您不应该编写任何单元测试。您应该理解,您应该只为您的代码编写单元测试,而不是其他人编写的代码 您没有指定编
提前谢谢 如果我理解正确,您可能有一些代码无法编译,您希望编写单元测试,如果代码确实无法编译,那么单元测试将失败。如果是这种情况,那么您不应该编写任何单元测试。您应该理解,您应该只为您的代码编写单元测试,而不是其他人编写的代码 您没有指定编程语言,因此我将执行一些伪代码。假设您正在编写一个函数来添加两个数字:
function add(a, b) {
return a + b;
}
很简单。您应该对此进行单元测试,例如,进行如下测试:
function testAdd() {
assertEquals(4, add(2, 2));
assertEquals(46, add(12, 34));
}
但是,您应该而不是编写一个测试来测试+
操作符是否工作正常。这是编写实现+
操作符真正工作原理的库的人的工作
因此,如果是这样,就不要编写任何单元测试。编译代码是编译器的工作。编译器应以适当的方式报告存在编译错误。您不应该测试编译器是否正确执行其工作-测试这是编写编译器的人员的工作。您没有指定语言
- Ruby、Python——动态和强大的类型系统。这意味着在运行时推导的类型(动态),但禁止在类型之间进行隐式转换
- Js,Perl——动态和弱类型系统
- C++--静态和强类型系统
模板
构造我的静态断言;
模板
结构my_static_assert{};
如果您想检查这样的机制是否正常工作。您应该创建unittest函数,该函数执行以下步骤:
我查看了google测试指南,但他们似乎不支持这样的概念您可以生成一组您知道应该编译的代码和一组不应该编译的代码,并将其提供给编译器(通过命令行),然后在单元测试中检查结果。然而,我通常同意icyrock.com的回答。(1)“您不应该测试编译器是否正确地完成了它的工作”语言规范可以包含实现定义的细节,如果您利用这些细节,检查它会很酷(2)你可以在你的项目中引入一些编译时机制——可能你想检查一下)p.s.@icyrock.com,你有一个非常非常非常高的级别,15.5K),所以我真的认为你对它了如指掌)
template <bool>
struct my_static_assert;
template <>
struct my_static_assert<true> {};