gpt4 book ai didi

java - 单元测试定义 - 范围和模拟外部依赖

转载 作者:行者123 更新时间:2023-11-28 21:03:42 24 4
gpt4 key购买 nike

我对单元测试的定义感到困惑。
我认为单元测试是模拟外部依赖,范围可以像 IT 测试一样大(不止一个类)。以这种思维方式,我可以在我的 UT 完整流程中进行测试,这可以帮助我快速捕获错误,(我没有使用 Spring,我没有使用外部依赖项),我想快速捕获错误,因为如果我在进行重构,我想每隔几分钟运行一次测试,看看是否有问题,所以我需要我的测试快速运行。 (这就是为什么我只想运行 UT 而不是 IT 测试)。

在业界看来,说到UT,UT应该small(作用域),还要mock外部依赖。我不认为这是一个好的思考方式,因为这意味着我的 UT 可能会错过 IT 发现的错误,这意味着每隔几分钟只运行 UT 是不够的,我应该运行 IT 测试,它要慢得多对我不利,因为重构过程会花费我更长的时间。

那么我错过了什么吗?为什么不编写像 IT 一样测试完整流程的 UT,而是模拟外部依赖项?谢谢

最佳答案

通常单元测试是覆盖单个类的单个方法的测试。

In object-oriented programming, a unit is often an entire interface, such as a class, but could be an individual method (https://en.wikipedia.org/wiki/Unit_testing)

One difference is what people consider to be a unit. Object-oriented design tends to treat a class as the unit, procedural or functional approaches might consider a single function as a unit. But really it's a situational thing - the team decides what makes sense to be a unit for the purposes of their understanding of the system and its testing. Although I start with the notion of the unit being a class, I often take a bunch of closely related classes and treat them as a single unit. Rarely I might take a subset of methods in a class as a unit. However you define it doesn't really matter (https://martinfowler.com/bliki/UnitTest.html)

通常,您有覆盖小块代码的单元测试和测试多个类/模块之间集成的集成测试。而且您运行单元测试的频率要比 IT 测试高得多。

小型单元测试的目的是尽可能精确地定位导致错误的代码段。如果您使用多个类的 It 测试失败,那么您需要一个一个地检查所有这些类以找到问题。但是,如果涵盖单个类的单个方法的单元测试失败,那么您就知道问题出在哪里。

关于java - 单元测试定义 - 范围和模拟外部依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52387651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com