Skip to content

Document AssertJ interoperability with Spock 2.4 and Groovy#167

@ocindev

Description

@ocindev

Describe the bug
The feature from assertj/assertj#2520 seems to be incompatible with using the StringAssertfrom assertj-core in a Groovy and Spock setup.

The then block in a spock test feature wraps any assertion code line with an groovy powerassert assert under the hood expecting the actual assertion expression to be evaluated as a boolean value. In Groovy there is the org.codehaus.groovy.runtime.DefaultGroovyMethods#asBoolean(java.lang.Object) method that Spock is calling. Due to the changes made to the AbstractStringAssert class this method is inaccessible and returns a BooleanAssert instead.

  • assertj core version: 3.25.3
  • java version: 17
  • groovy version: 4.0.18
  • test framework version: Spock 2.3-groovy-4.0
  • os (if relevant):

Test case reproducing the bug

Add a test case showing the bug that we can run

importspock.lang.Specificationimport staticorg.assertj.core.api.Assertions.assertThatclassDemoSpecextendsSpecification{def'assert some integer'(){when: def someInteger =10then: assertThat(someInteger).isEqualTo(10) } def'assert some string'(){when: def someString ='some string'then: assertThat(someString).isEqualTo('some string') } }

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions