Unit testing 单元测试-不测试的内容
我已经阅读了许多关于stackoverflow的帖子和许多关于单元测试的文章。我只是想弄明白我所理解的是对的Unit testing 单元测试-不测试的内容,unit-testing,Unit Testing,我已经阅读了许多关于stackoverflow的帖子和许多关于单元测试的文章。我只是想弄明白我所理解的是对的 不要测试任何不涉及逻辑的东西。例如:如果服务层中有一个方法只是调用数据访问层中的另一个方法,那么不要测试它 不要测试基本的数据库操作。如果我在DAL中有一个简单的方法在数据库中插入一个对象,比如说“public void save(object object){…}”,并且没有对从服务层接收的对象进行处理,那么不要测试它 我不需要在所有层上验证对象。这意味着对象中的某个字段不应该为nul
还有什么我不应该测试的呢?不要测试任何不会失败的东西 但更重要的是你的观点
最好的做法是遵循真正的TDD。不要为了测试而测试。测试作为设计技术。测试,因为它会输出松散耦合的代码。测试,因为在两个上下文(测试和应用程序)中执行代码可以生成更好的代码。一旦你走上了TDD的道路,你就不会问你应该测试什么,不应该测试什么。测试只是编写代码的一部分,而不是一项独立的活动。等等,你说的JS是指JavaScript吗?我想你指的是客户端验证?
在构建网站时,决不能假设客户机验证了任何东西。JavaScript可以被禁用,页面可以被修改或伪造,等等。我不同意你的观点。您不应该根据现在编写代码的方式来编写单元测试,但要确保将来,如果其他开发人员更改了代码的某些随机部分,他可以运行这些测试并获得一切正常的信心 例如,您可能希望测试只调用另一个方法的方法。毕竟,您只关心外部方法的工作原理,而不关心它是如何工作的。如果下一个开发人员更改了外部方法,使其不再那么简单,那么他将错过一个单元测试 这就是为什么您应该使用这样的工具来确保100%的代码在单元测试中执行 如果你已经有了可以工作的东西,那么花时间围绕它编写一系列测试可能是不值得的。这里需要注意的是,如果您需要对它或使用它的代码进行更改,那么这些测试是非常宝贵的
至于不需要测试DAL对无效输入的处理。。。您需要弄清楚您的服务边界是什么。这要看情况而定。如果您无法控制客户端,则需要测试服务器的期望是否得到满足(在某一层)。简单回答-无 复杂答案-你不应该测试你没有时间做的事情。 测试是由一个复杂的计划所驱动的,该计划对所需的和可负担的测试进行了规划,并对软件系统的最重要部分和工作流进行了优先排序。留给测试的时间越多,可以测试的附带案例就越多 在单元测试中,每个单元,在OOP中,每个类都有自己的测试。使用最小值、最大值、平均用例值简单地测试所有内容,并进行否定测试——如果软件工作正常,则测试必须失败。测试错误处理 有关该主题的更多详细信息,请参见我不进行任何单元测试,因为我希望集成和/或系统测试:
- 覆盖代码
- 自动化
- 作为单元测试使用,并且与单元测试一样有用
b) 或者,无论出于何种原因,在集成/系统测试之前应该测试哪些(可能是因为您的项目开发是如何并行地分配给多个开发人员的)我不确定我是否同意您在回答中提到的任何例外情况 不涉及逻辑的方法 即使一个方法只是将其实现委托给一个内部依赖项,验证它是否发生也是非常重要的。我假设您编写代码是有原因的,所以您需要编写一个测试来确保它保持这种状态 记住,联合国的一个关键好处
public void Save(Entity entity)
{
this.repository.Save(entity);
}