gpt4 book ai didi

unit-testing - Spock - @Subject 注释和实用程序 |正在测试的辅助类

转载 作者:行者123 更新时间:2023-12-04 16:49:03 26 4
gpt4 key购买 nike

我有一个关于 Spock 中测试约定的问题。

假设我们要测试A 类,它是具有静态方法的util 类。测试它的经典方法是在每个测试方法中使用 A.method()。

但是,在 Spock 中,我们得到了 @Subject 注释(而且 Groovy 让我们这样做,即使所述类具有私有(private)构造函数),我开始怀疑。

@Subject util = new A()

稍后在测试中,我们将通过 util.method() 调用这些方法。

通过这样做,我们将实现更清洁的测试。我们立即看到正在测试的内容。在大多数 IDE 中,它会被突出显示等等。 @Subject 是非常冗长的注解。

您认为以这种方式进行测试有什么缺点吗?或者有什么更好的方法可以在 Spock 中清晰地测试 util 类?

最佳答案

我看到使用冗长的 @Subject 的好处,但是实例化实用程序类会导致更多的困惑。

检查 IntelliJ 关于实用程序类的实例化:

Reports any new expressions which instantiate utility classes. Utility classes have all fields and methods declared static, and their presence may indicate a lack of object-oriented design. Instantiation of such classes most likely indicates programmer error.

  • 这是不自然的,可能会被其他开发人员认为是编程错误
  • 违反 private 关键字是不好的做法
  • Sonar、CodeNarc 和 IntelliJ 肯定会提示

我会采用经典方法或完全避免使用实用程序类。不过,这全都与惯例有关。

关于unit-testing - Spock - @Subject 注释和实用程序 |正在测试的辅助类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29858411/

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