unit-testing - Joe Armstrong 在 "there are more advanced techniques"中提到的单元测试是什么

标签 unit-testing code-reuse

乔·阿姆斯特朗所说的“你根本不应该编写测试用例,你可以使用比愚蠢的旧测试用例更先进的技术”,这句话是什么意思?

那些更先进的技术是什么?

来源:A Guide for the Perplexed

此外,他甚至建议不要重用代码,而是重写它。这违背了我学校教给我的一切。所以我想知道这个说法背后的理由是什么。

最佳答案

对于测试用例:进行函数式编程的人有一种轻视单元测试的倾向。 Rich Hickey 引用了一句话,他将使用单元测试与依靠从护栏弹起才能继续行驶的汽车进行比较。他说得有道理,面向对象的企业代码是如此复杂和困惑,这正是我们所做的。理论上来说,如果你的 FP 做得正确,你应该编写大部分小的纯函数,它们的作用是不言而喻的。在这种情况下,单元测试级别的测试不会增加太多。

(我不能肯定地说,但我不知道有什么让我认为阿姆斯特朗特别注重证明程序的正确性。Erlang 没有编译时类型检查,这在我看来就像这会让证明正确性变得更加困难。)

对于重写而非重用,我认为其值(value)不在于软件,而在于你的理解。如果你重复使用很多东西,你可能会发现自己正在拼凑各个部分,而每一个部分都是你第一次尝试解决问题。每当我们第一次构建一些东西时,我们都不知道我们在做什么,如果幸运的话,它可能大部分都能工作,但它几乎是垃圾。重写提供了建立联系和学习的机会,最好以新的眼光重新审视问题,并有机会创造出更干净、更好的东西。

关于unit-testing - Joe Armstrong 在 "there are more advanced techniques"中提到的单元测试是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64111039/

相关文章:

java - 如何在 Android 中创建可重用的代码 fragment ?

android - 模拟 Google Analytics v4

java - 链式调用的模拟或 stub

java - 'all objects of a type are equal' 模式的代码重用

forms - 如何重用Symfony2中遗漏的某些字段的表单

java - 我如何构建多线程代码以更好地重用java中的代码?

java - 使用 DBUnit/Junit 测试我的存储库层,我应该手动构建方案还是自动化它?有什么优点?

c# - System.Net.Http 无法加载

python - 一种模拟松散定义的 Python dict 对象的简单方法

kotlin - 使用 Javalin 在多个路径中重用同一组路由