A minimal reproducible build.gradle:
apply plugin: 'java'
dependencies {
    testImplementation platform('org.springframework.boot:spring-boot-dependencies:2.5.3')
    constraints {
        testImplementation 'org.mockito:mockito-core:3.11.2'
    }
    testImplementation 'org.springframework.boot:spring-boot-properties-migrator'
    testImplementation 'org.mockito:mockito-core'
}
The expected Mockito version in testImplementation configuration is 3.11.2, but I get 3.9.0. However, I can get 3.11.2 version by removing org.springframework.boot:spring-boot-properties-migrator dependency.
The bug can be fixed by changing this line: https://github.com/spring-projects/spring-boot/blob/092ac696869b92b1635b6035966b59417f944430/spring-boot-project/spring-boot-tools/spring-boot-configuration-metadata/build.gradle#L10
... to this one:
    api(platform(project(path: ":spring-boot-project:spring-boot-dependencies")))
Let me explain why I think it makes sense to change the current behavior.
- 
spring-boot-properties-migratormodule depends onspring-boot-configuration-metadata: https://github.com/spring-projects/spring-boot/blob/60e57f7a3f8e3e92fb1d5b413b892d981e9e40fb/spring-boot-project/spring-boot-properties-migrator/build.gradle#L11 - 
spring-boot-configuration-metadatamodule depends onspring-boot-parentplatform: https://github.com/spring-projects/spring-boot/blob/092ac696869b92b1635b6035966b59417f944430/spring-boot-project/spring-boot-tools/spring-boot-configuration-metadata/build.gradle#L10 - 
spring-boot-parentplatform depends onspring-boot-dependenciesenforced platform: https://github.com/spring-projects/spring-boot/blob/092ac696869b92b1635b6035966b59417f944430/spring-boot-project/spring-boot-parent/build.gradle#L176 - 
Enforcing
spring-boot-dependenciesplatform makes Gradle prioritize its versions over versions defined independencies.constraints { ... }, even if the version in constraints is greater than the version inspring-boot-dependencies. 
By making spring-boot-configuration-metadata depend on spring-boot-dependencies instead of spring-boot-parent we'll make Spring versions not enforced, and this will allow changing dependency versions in constraints.
Comment From: remal
For those who's faced this issue: you can fix it by using dependency substitution:
dependencies {
    modules {
        module('org.springframework.boot:spring-boot-parent') {
            replacedBy('org.springframework.boot:spring-boot-dependencies', 'org.springframework.boot:spring-boot-parent enforces versions')
        }
    }
}