在编写实际代码之前在测试驱动开发中编写JUnit?

wfsdck30  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(321)

伙计们,tdd总是说
我们甚至应该在编写实际代码之前编写junit。
不知何故,我无法以正确的精神理解这一点。我希望它的意思是,您只需编写带有正确签名的空方法,并且您的测试用例最初可能会失败
在tdd方法中,我需要得到客户列表。
根据我的理解,我将写下面的空方法

public List<CustomerData> getCustomers(int custId){

return null;
}

现在,我将编写junit测试用例,其中我将检查大小为10(这是我实际期望的)。是这样吗?
基本上我的问题是在tdd中,我们如何在编写实际代码之前编写junit测试用例?

doinxwow

doinxwow1#

我希望它的意思是,您只需编写带有正确签名的空方法
对。对于大多数现代ide,如果您编写的方法名在测试中不存在,它们将为您创建存根。
在tdd方法中,我需要得到客户列表。正确的方法是什么?
你的例子不太清楚。您想测试一个0长度的数组,但是您已经返回了它:您应该首先返回它 null ,测试显然会失败。
然后修改方法以使测试成功。
然后为customer add创建一个测试方法。测试失败。修好它。冲洗。重复。
所以,基本上:使用tdd,您开始编写您知道会失败的测试,然后修复代码,使其正常工作。
推荐阅读。

qfe3c7zg

qfe3c7zg2#

我想先写测试,写测试的时候考虑函数的签名。
这与写签名然后写测试是一样的,但是当你在写测试的同时发明函数的签名时,测试会很有帮助,因为你将拥有函数的所有责任信息,你将能够得到正确的签名。

wr98u20j

wr98u20j3#

这部分是对的。
使用ide(eclipse,intellij)可以创建一个测试。在该测试中,调用一个方法(不存在)并使用重构工具创建一个具有适当签名的方法。
这是一个使使用tdd更容易、更有趣的技巧。
根据 Now i will write junit test case where i will check the size as 0. Is this Right? 你应该写一个测试 fails ,并提供适当的实现。

2admgd59

2admgd594#

通常,您会在编写代码框架的同时编写测试。最初,您可以编写一个非功能实现(例如抛出 UnsupportedOperationException )这将导致测试失败。然后将充实实现,直到测试最终通过。
你要务实一点。显然,至少在被测单元完成编译之前,您无法编译测试,因此您必须在测试的同时完成最少的实现工作。
看看dobbs博士最近的一篇社论,它准确地讨论了这一点以及实用主义在这方面的作用,特别是由这种实践的Maven们(kent beck等人)
tdd的一个关键原则是,不首先编写一个失败的单元测试,就不会编写任何代码。但事实上,如果你与tdd的主要倡导者交谈(比如推广这项技术的kent beck和教过数千名开发人员的bob martin),你会发现他们两人都在没有先编写测试的情况下编写了一些代码。我要强调的是,他们并没有把这些时刻看作是信仰的缺失,而是把它们看作是智能开发人员必要的实用主义。

相关问题