【问题标题】:Unit tests: finding class dependencies单元测试:查找类依赖项
【发布时间】:2012-06-22 19:17:33
【问题描述】:

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

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

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

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

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

编辑:对不起,我正在使用 eclipse 和 java。

【问题讨论】:

    标签: java eclipse unit-testing dependencies


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      是的,一个是 JDepend,它分析 package 依赖关系。我们使用它来自动检测包之间的循环依赖关系。我不知道检查测试本身的依赖关系有多容易。

      有关在单元测试中使用 JDepend 的更多详细信息,请参见 http://www.clarkware.com/software/JDepend.html#junit

      还有一个corresponding Eclipse plug-in 用于可视化依赖关系。

      【讨论】:

      • 不错,但看起来这仅适用于包。我对课程更感兴趣
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多