我有一个包含数据访问,服务和演示文稿层的3层应用程序。我应该在哪里进行单元测试?在每一层?一个表示层?
答案 0 :(得分:3)
其中一些取决于你的方法。如果您已经有代码,并且在创建代码之后进行了单元测试 - 我首先会添加一些端到端的验收测试。这将练习所有图层。
然后,当您进入系统的任何部分进行更改时,我将开始对正在更改的组件进行单元测试 - 首先只是测试现有功能,然后再为新功能添加单元测试。如果您的代码松散耦合并拆分为定义良好的组件,则此方法很有效。如果没有,你还有很多工作要做。
根据您的数据访问量有多薄,我不太愿意在此处编写任何单元测试,因为错误应该非常经济有效地获取,而无需对其进行单元测试。
如果您刚刚开始,请阅读BDD / TDD并使用该方法确保质量。
答案 1 :(得分:3)
通常你会使用单元测试 - 假设你认为JUnit,NUnit等 - 对于你的代码的小孤立部分,理想情况下是单个类(并不总是那样工作,这就是有人发明了模拟的原因)。 p>
在你提到的三个层中,你可以在这三个层中找到这种类型的测试。通过适当的设计(例如MVC),您甚至可以测试表示层的大部分内容。在测试服务层或域层(=业务逻辑)时,有助于模拟数据访问层。在测试数据访问层时,请尝试使用内存数据库来提高速度,或者首先使用现成的ORM(对象关系映射)工具。
一般情况下,我建议使用单元测试,无论它们提供什么价值。大多数开发团队都没有编写太多单元测试的风险。但也要注意单元测试只是一个方面,其他类型的测试和/或工具可能更适合。
答案 2 :(得分:1)
我准备回答“每一层,你不能有太多的测试代码”,但这不一定是真的。
我不得不说这取决于层的紧密耦合程度。如果你只使用顶层来完全覆盖,无论如何都是理想的,你不会 为较低层创建单独的测试。
如果没有,例如,如果数据访问层是目前仅部分使用的通用库,那么您至少应该在该层中添加测试以获得覆盖率并且更加自信那里会出现问题,以后会出现。
答案 3 :(得分:0)
通常,您将在中间层进行所有单元测试。
您当然可以在DAL中进行集成测试,并对该层进行手动或自动UI测试。如果您发现这些图层的某些部分可以进行单元测试,那么一定要做 - 尽管您也应该质疑它们是否应该在这些图层中。
答案 4 :(得分:0)
我应该在哪里进行单元测试?
坦率地说,到处都是。
如果可能的话,您编写的每一段代码都应该围绕它进行自动化测试。如果你采用面向对象的方法,每个对象都应该有一套单元测试。如果你的程序是程序性的,那么每个函数都应该有单元测试来运行它。
确保您的单元测试运行得足够快,其他开发人员不介意使用它们。