one on on j2ee design and development 关于测试的一段话不理解。

在第三章“j2ee应用的测试”中关于测试先行说到:
“当我们在编写应用代码之前编写测试时,应该确认这些测试在实现所需功能度之前失败,这使我们能够检查测试案例和验证测试覆盖度。例如,我们可能会为一个方法编写测试,然后编写这个方法的一个返回空值的次要实现。现在我们可以运行该测试案例,并见到它失败(如果它不失败,就是我们的测试集有毛病)”
1.不是很理解这段话表述的意思,我理解测试案例测试的是:某个方法是否能够正确执行期望的逻辑和是否能够正确的返回期望值,为什么要“运行该测试案例,并见到它失败”?
2.什么是 一个方法返回空值的次要实现?

后来又想了想,是不是像一个login(String username,String password) ,如果用户和密码不匹配的话抛出运行期异常,或返回null值。
这样的方法就要编写对应的“使其失败”的测试案例?

以login为例
为了实现这个功能,我们需要设计一个方法,比如:login(String username,String password),但是不要实现任何内容。
我们同时需要一个测试这个方法的测试方法,比如testLogin(arg1,arg2,...)
在测试方法里,我们可以把预期结果设为“欢迎登录”,也就是方法login成功之后所希望看到的效果。(补充一点,如果按照严格的测试驱动开发,应当先写测试方法testLogin,再写功能方法login)
现在我们让login方法中什么都没有,只返回一个null。然后编译、运行。(这里解释了你的第2个问题)
这个时候你会看到,编译通过了,但是测试fail了。

现在解释你的第1个问题
你可能会觉得,既然我能够一次就把login方法写好,让它返回一个正确的结果,为什么还要多此一举,先返回一个空,让它fail,再实现一个正确的方法呢?
这个可以引出很多话题,但是简单来说,tdder通常这样认为,人的认识都是从简单到复杂,一个只返回null的方法比有真正返回值的方法要简单,这个简单的方法可以帮助开发人员理解我现在进行到什么地方了,下一步需要做些什么。

应该是正例和反例;
即除了正例之外的其他情况都需要是失败的;