如何解决测试通过,误报
我的测验得到假阳性。我正在寻找密钥“ 1234”,我知道它不存在,但是测试仍然可以通过。
我有MAP方法(reportUIDsAndTitles),它存储一堆UID和标题的键和值。我的测试遍历了这些键,如果找到则断言标题与键匹配。但是在下面的代码中,如果找不到密钥,则测试仍然可以通过。
我该如何解决?我已经验证了我的MAP方法可以工作并且循环可以工作,但是不确定如何设置失败。
@Test
public void apiTitleOfReport() {
Map<String,String> pairs;
pairs = reportUIDsAndTitles();
for (Map.Entry pairEntry : pairs.entrySet()) {
if (pairEntry.getKey().equals("1234")) {
String keyvalue = (String) pairEntry.getValue();
assertEquals(keyvalue,"Name of title I am looking for","Report Title not found.");
}}}
*******这是我更新的代码,按照建议在IF块之前缺少Assert。现在,如果密钥不存在,它将失败。但是,如果确实存在,代码将继续并检查标题是否正确。谢谢大家的建议。
@Test
public void apiTitleOfReport() {
Map<String,String> pairs;
pairs = reportUIDsAndTitles();
assertTrue(pairs.containsKey("1234"));
for (Map.Entry pairEntry : pairs.entrySet()) {
if (pairEntry.getKey().equals("1234")) {
String key = (String) pairEntry.getValue();
assertEquals(key,"Report Title not found.");
}}}
解决方法
您遍历pairs
映射中的每个条目,然后:
- 如果条目的键为
"1234"
,请检查该值(注:您正在调用值keyValue
?您需要更好的命名技巧,mate:P)是否等于某些特定内容。如果是,那就太好了。如果没有,则失败。 - 就是这样-如果条目的密钥不完全是
"1234"
,我们将继续循环。只有任何键为"1324"
的条目才会导致任何实际代码运行。 - 就是这样。没有#3。
因此,正如您所说,键1234没有条目,因此您的代码不执行任何操作。
如何解决?您的意图不清楚。一种方法可能是:
@Test
public void ensure1234IsNotInTheMap() {
assertFalse(map.containsKey("1234"));
}
或者也许:
@Test
public void ensure1234IsMappedToFOOBAR() {
assertEquals("FOOBAR",map.get("1234"));
// if 1234 isn't in the map at all,the map.get op
// returns null,and thus your test will properly fail,// as null is not equal to "FOOBAR".
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。