我正在尝试编写测试来验证编译错误。它是关于为String类型属性分配一个数字。但由于它是编译错误,因此单元测试代码甚至不会在第一时间编译。所以任何人都有关于如何做到这一点的任何建议?
我想也许我可以在运行时分配号码并检查是否抛出了某些异常?但我不确定究竟是怎么做到的。
提前致谢!
答案 0 :(得分:4)
如果我理解正确,你有一些代码可能无法编译,如果代码确实无法编译,你想编写单元测试失败。如果是这种情况,那么你不应该写任何单元测试。您应该明白,您应该只为您的代码编写单元测试,而不是其他人编写的代码。
你没有指定编程语言,所以我会做一些伪代码。假设您正在编写一个函数来添加两个数字:
function add(a, b) {
return a + b;
}
很简单。您应该对此进行单元测试,例如通过进行如下测试:
function testAdd() {
assertEquals(4, add(2, 2));
assertEquals(46, add(12, 34));
}
但是,您应该不编写测试,以测试+
运算符是否正常工作。这是编写实现+
运算符实际工作方式的库的人的工作。
因此,如果是这种情况,请不要编写任何单元测试。编译代码是编译器的工作。编译器应以适当的方式报告编译错误。您不应该测试编译器是否正确地完成了它的工作 - 测试那是编写编译器的人的工作。
答案 1 :(得分:1)
您没有指定语言
我们假设我们正在谈论C ++。而且我可以创造更多真实的例子。想象一下,为你的项目实现了static assert,它不能使用c ++ 11编译器
template <bool> struct my_static_assert; template <> struct my_static_assert<true> {};
如果你想检查这种机制是否正常。您应该创建unittest函数,执行以下步骤:
为编译器创建一些文件
创建编译器的外部进程并将测试编译单元传递给它
我查看了谷歌测试指南,但似乎他们并不支持这样的概念https://github.com/google/googletest/blob/master/googletest/docs/advanced.md