大家晚上好
假设您的代码包含以下语句:
if (string ends with char 'y') {
if ((char before last is not 'e') || (char before last is not 'a')) {
return (something awesome);
}
}
所以我认为这很简单......
测试1: input =“xy”(最后一个字符是y,最后一个字符不是e或a)
结果 - 部分覆盖率......
我缺少哪些其他测试?如果这是和&&而不是||,我认为测试会更容易,但是||我有点困惑。
你能建议Test2,3,n?
谢谢
答案 0 :(得分:2)
你也可以编写测试以确保你不会返回一些很棒的东西
Test2: input = "ez" does not return something awesome
Test3: input = "af" does not return something awesome
测试应证明您的预期行为。 不同长度的琴弦怎么样?
(empty, '1', '2 ', '3 ')
您可能希望将其转换为方法或函数,并将其命名为适当的名称。 然后为这个简单的方法编写测试(在TDD中你会先编写它们)。
答案 1 :(得分:2)
您希望使用输入“ey”和“ay”来测试预期的行为。
你可能会发现你的方法没有做到你想象的那样。我认为||
确实让你感到困惑。
答案 2 :(得分:1)
有不同类型的报道:
我认为你的困惑正在发挥作用,因为你正在考虑符号覆盖,而你的工具正在为你提供分支覆盖。这是区别:
符号覆盖率将衡量您是否已到达每个符号(即一串代码,直到';'字符)。以下行包含两个符号:
int i = 0; int j = 3;
分支覆盖率测量真值和假值中的每个条件。在您的示例中,列出了4个不同的条件,每个条件都有一个真分支和一个假分支。为了完全测试每个分支,您需要对以下每个条件进行测试:
使用您编写的代码,您可能会遇到意想不到的事情。如果字符串以y结尾,无论如何都会得到一些东西。如果字符串以'ey'结尾,那么它不会以'ay'结尾。如果这些条件中的任何一个都是真的,那么你会得到很棒的东西写下测试并亲自看看。