Sad*_*own 7 testing unit-testing
可能重复:
单元测试值得付出努力吗?
我知道一般来说单元测试的目的是什么,但我发现了一些困扰我的事情.
1)测试早期错误发现的目的.因此,在后来的一些迭代中,如果我对代码进行一些更改,自动化测试必须让我惊慌失措并告诉我,我已经搞砸了很久以前被遗忘的软件.
但是,假设我有A类并说它与其他类的实例交互,称之为B类.
当为A类编写单元测试时,他必须模拟B类.因此,在某些将来,如果在B类中做出一些改变,并且导致一些错误,它们将只反映在B类的单元测试中,而不是A的('因为A的测试不使用真正的B类,但它是固定输入和输出的模拟).所以,我看不出单元测试怎么能及早通知一些人不知道的错误?我知道课堂上可能存在的错误,我正在改变,我不需要对它进行单元测试,我需要测试来警告我的变化后果,这些错误会导致一些"被遗忘"的类中的错误,而这不是单元测试可能.还是我错了?
2)当编写模拟和调用方法,输入和返回值的正确期望时,必须知道将如何实现测试类.我认为这与测试驱动的开发相矛盾.在TDD中,首先编写测试,然后由它们驱动,编写代码.但除非我编写必须进行测试的代码,否则我无法写出正确的期望(以及一般的测试).这与TDD相矛盾,对吧?
如果我使用真实对象而不是模拟,这两个问题都可以解决.但那不是单元测试,对吗?在单元测试中,测试类必须与系统的其余部分隔离,而不是使用真实类而是模拟.
我确定我错了,但我无法找到.我一直在阅读和阅读,我找不到我理解错误的东西.
严格地说,您花费更多时间编写单元测试而不是专注于实际代码.
你无法实现100%的代码覆盖率.我做单元测试我的应用程序,但我觉得它不值得.但并不是每个人都同意这一点.
如果你更改了一段代码,你的单元测试就会失败,并找出它失败的原因,但对我来说它不值得.
我不是单元测试的忠实粉丝...你嘲笑一切,但嘲笑是一项重大任务..........
但现在公司正在尝试TDD方法.
简单的回答:是的,它们确实有用。
TDD 很好,而且都是理论上的,但我几乎没有见过它在实践中被实现。然而,单元测试并不局限于 tdd。您始终可以为有效的代码编写单元测试,以确保其在更改后仍然有效。单元测试的这种用法为我节省了无数时间的错误修复时间,因为测试立即指出了问题所在。
我倾向于避免嘲笑。在大多数情况下,我认为它们不值得。不使用模拟可能会使我的单元测试更像是集成测试,但它可以完成工作。为了确保您的课程按设计进行。