Search code examples
junitmockitospring-testspring-boot-testjunit-jupiter

Conflict org.springframework.boot.test.context.SpringBootTest; and org.springframework.test.context.junit.jupiter.SpringExtension;


I'm developing a spring boot app. In my build.gradle I have added the dependency:

compile group: 'org.springframework', name: 'spring-test', version: '3.1.1.RELEASE'
implementation group: 'commons-io', name: 'commons-io', version: '2.6'

to use MockMultipartFile in my service:

import org.springframework.mock.web.MockMultipartFile;
...
...
MultipartFile multipartFile = new MockMultipartFile("file",
        file.getName(), "image/jpeg", IOUtils.toByteArray(input));

But now in the testing class I have this error:

enter image description here

This is my build.gradle:

dependencies {

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
    
compile 'org.hibernate:hibernate-core:5.2.11.Final'
compile 'org.hibernate:hibernate-entitymanager:5.2.11.Final'
compile 'mysql:mysql-connector-java'
compile 'org.apache.commons:commons-dbcp2:2.0.1'


compile 'javax.xml.bind:jaxb-api:2.3.1'
compile 'com.sun.xml.bind:jaxb-core:2.3.0'
compile 'com.sun.xml.bind:jaxb-impl:2.3.1'
compile 'javax.activation:activation:1.1.1'

compileOnly('org.projectlombok:lombok')
annotationProcessor 'org.projectlombok:lombok'

testCompile 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
testCompile('org.mockito:mockito-junit-jupiter:2.23.0')

compile 'org.modelmapper:modelmapper:2.3.0'

compile 'com.google.firebase:firebase-admin:6.13.0'
compile group: 'org.springframework', name: 'spring-test', version: '3.1.1.RELEASE'
implementation group: 'commons-io', name: 'commons-io', version: '2.6'

}


Solution

  • You use a quite old version of Spring Test:

    compile group: 'org.springframework', name: 'spring-test', version: '3.1.1.RELEASE'
    

    I assume Spring Test 3.1.1 did not yet have the JUnit JUpiter SpringExtension. Either update spring-test to a more recent version or remove it from your build.gradle and let Spring Boot with the Spring Boot Starter Test manage the dependency version of spring-test.

    So your updated dependencies section could look like the following:

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'mysql:mysql-connector-java'
    
    // this is your testing swiss-army knife - take a look at its transitive dependency
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
        
    compile 'org.hibernate:hibernate-core:5.2.11.Final'
    compile 'org.hibernate:hibernate-entitymanager:5.2.11.Final'
    compile 'mysql:mysql-connector-java'
    compile 'org.apache.commons:commons-dbcp2:2.0.1'
    
    
    compile 'javax.xml.bind:jaxb-api:2.3.1'
    compile 'com.sun.xml.bind:jaxb-core:2.3.0'
    compile 'com.sun.xml.bind:jaxb-impl:2.3.1'
    compile 'javax.activation:activation:1.1.1'
    
    compileOnly('org.projectlombok:lombok')
    annotationProcessor 'org.projectlombok:lombok'
    
    // REMOVE (managed by Spring Boot Starter Test) testCompile 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
    // REMOVE (managed by Spring Boot Starter Test) testCompile('org.mockito:mockito-junit-jupiter:2.23.0')
    
    compile 'org.modelmapper:modelmapper:2.3.0'
    
    compile 'com.google.firebase:firebase-admin:6.13.0'
    // REMOVE compile group: 'org.springframework', name: 'spring-test', version: '3.1.1.RELEASE'
    implementation group: 'commons-io', name: 'commons-io', version: '2.6'