2

我正在编写一个执行 Linq 查询的方法,并且我正在尝试使用 TDD 来做到这一点。

但是,我的查询现在有一个Any(), 但有时我会在编写测试后删除或更改代码中的内容,以查看我的测试是否涵盖了应涵盖的所有内容。

然后我开始为了好玩而改变Any()All()我的测试仍然通过。

我想知道我是否必须检查所有不同的情况,这样我才能得到所有All()Any()组合:

  1. 鉴于我的列表包含零个元素(All()会返回true,但Any()会返回false
  2. 鉴于我的列表包含一些元素并且只有一个满足谓词
  3. 鉴于我的列表包含一些元素并且所有元素都满足谓词

我在几本 TDD 书籍中读到人们经常“伪造”代码,结果测试失败。但在这种情况下,我必须编写比必要更多的代码来伪造它。

4

1 回答 1

7

The solution is simple: you clearly don't have enough tests to cover all the possibilities. Without knowing your domain, or exactly what you're testing, you probably needs tests for

  • empty
  • not empty, all satisfy
  • not empty, some satisfy
  • not empty, none satisfy
于 2013-08-01T20:25:22.500 回答