让我们有一个时髦的类,比如:
class SomeClass {
String myProperty = 'foo'
}
通常在 groovy 中,使用属性名称或 getter 访问值是完全有效的——这通常会给出相同的结果SomeClass
:
SomeClass someClass = new SomeClass()
assert someClass.myProperty == 'foo'
assert someClass.getMyProperty() == 'foo'
但是 - 由于 Jenkins Pipeline 实现中的缺陷 - 有时(!)您被迫使用 getter - 因为普通属性访问将不起作用(使用某些类层次结构时),请参阅:JENKINS-47143。坏事是相同的代码可能适用于某些工作,而它不适用于其他工作:
SomeClass someClass = new SomeClass()
assert someClass.myProperty == 'foo' // sometimes throws 'property not found' error
assert someClass.getMyProperty() == 'foo'
现在我已经为我们的 Jenkins 共享库进行了几个单元测试——但缺少的是一种检测属性访问的方法,简而言之:一种禁止属性访问的方法,因此单元测试已经提前抱怨。