gpt4 book ai didi

java - 单元测试 : finding class dependencies

转载 作者:行者123 更新时间:2023-11-29 10:07:30 24 4
gpt4 key购买 nike

在编写单元测试时,是否有任何自动化工具可以查找类依赖关系。

一个例子来说明我的意思:

我们想为 ToBeTested 类编写单元测试。所以我会写一些测试来验证类的预期行为。现在我仍然不知道是否存在类依赖关系,因为 ToBeTested 可能使用了很多其他类。了解这一点很重要,因为我们希望打破这些依赖关系或至少确保它们是安全的(已经过测试)。

到目前为止我发现的查找依赖项的最佳方法是使用 eclemma,它为我提供了一个类列表,其中包含在测试期间运行的代码。

但是知道我手动输入这些类,有没有更简单/自动化的方法来获取这些类,甚至在我的 java 程序中使用这个列表。

编辑:抱歉,我正在使用 eclipse 和 java。

最佳答案

由于单元测试(几乎总是)是白盒测试,您可以简单地查看被测试类的源代码以了解其依赖关系。

由某些自动化工具生成的依赖项列表在理论上听起来不错,但根据我的经验,它不会有太大帮助 - 你需要一个一个地检查依赖项,从当前测试的角度确定哪些是真实的、重要的,然后为您的单元测试正确设置/模拟它们。这部分不能自动化(我怀疑它永远不会)。

(对我而言)实现这一点的最简单和最好的方法是使用最简单明显的测试夹具开始运行测试,即通常是 ToBeTested tested = new ToBeTested()。如果成功,我将调用添加到对象上所需的方法。如果这也成功(即运行时没有抛出异常),我添加断言。如果(当)这些步骤中的任何一个失败时,我会调查/调试代码以查看出了什么问题,并扩展测试夹具以涵盖该问题。

在最好的情况下(在你自己的代码上进行 TDD,新开发)这个过程当然要简单得多,因为类从一开始就被设计为可测试的,因此它具有最少数量的依赖项,而且你已经知道这些。在最坏的情况下(为遗留代码编写单元测试),这可能是一个痛苦但有益的探索和重构过程,需要几个小时才能创建第一个工作测试。但接下来会容易得多,在第三次之后,我几乎总是开始像传送带一样进行更多测试。

关于java - 单元测试 : finding class dependencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3875035/

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