我的团队正在开发一个已经运行了几年的应用程序,但是没有编写任何单元测试。现在我们希望开始这样做,我们意识到我们不可能通过所有现有的方法来测试它们,因为这需要多年的工作。
问题是:如何确定哪种方法绝对需要单元测试,哪种方法不需要?
您是希望单元测试经常调用的方法还是经常修改的方法? 我读到单元测试在DAO类上效率很低。我应该将测试限制在包含逻辑的方法吗?
最重要的是:只要部分应用程序经过单元测试,测试是否有用?
答案 0 :(得分:2)
如何确定哪种方法绝对需要单元测试,哪种方法不需要?
在不了解您的代码库及其历史和未来的情况下,这是一个难以回答的问题。但一般来说,编写难以理解的代码部分的测试将在不久的将来被修改或者已知存在错误。在测试遗留应用程序时,最好的方法是让测试使程序更容易维护,修复错误并防止旧错误返回。
您更愿意对经常调用的方法或经常修改的方法进行单元测试吗?
如上所述,这取决于。被称为常常是微不足道的方法吗?容易明白?我可能倾向于“经常修改”只是为了让未来的发展更容易。但理想情况下,两者都应该接受测试。
我读到单元测试对DAO类的效率相当低。
我不知道你在哪里读到的。如果使用模拟对象,则使用DAO进行单元测试非常有效。
只要部分应用程序经过单元测试,测试是否有用?
任何测试都很有用。测试覆盖率仅为10%的程序优于覆盖率为0%的程序。特别是如果10%是该计划中最重要或最棘手的部分。
如果您尚未阅读,我强烈推荐Michael Feather的有效使用旧版代码,其中“遗留代码”表示没有测试的代码。
答案 1 :(得分:0)
有些人为getter和setter创建单元测试,并坚持100%的代码覆盖率。
实际人员将测试那些需要测试的方法。这意味着什么将取决于您的智能和识别需要测试的方法。
然而,Some people考虑单元的最小大小是类,并且应该创建测试来测试类(有时是它的关联类)。
简而言之,忘记任何关于单元测试的教条原则,重要的是代码的质量。像敏捷开发一样,它可以帮助您实现重要的目标。因此,如果您认为您的DAO对象不会从测试中受益,那么请不要费心 - 花费那段时间,您将花费更多的时间来做更高效的事情。