Ivan dal Bosco
Ivan dal Bosco

Reputation: 3559

ClassNotFoundException on org.springframework.test.context.TestContextAnnotationUtils when upgrading Spring Boot to 2.4.2

In my POM I upgraded the version of Spring Boot from 2.3.5.RELEASE to 2.4.2. As a result, mvn clean test now fails with error

java.lang.NoClassDefFoundError: org/springframework/test/context/TestContextAnnotationUtils
Caused by: java.lang.ClassNotFoundException: org.springframework.test.context.TestContextAnnotationUtils

on a test that consists simply in

package ch.ge.ael.enu.mediation;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class MediationApplicationTests {

    @Test
    void contextLoads() {
    }

}

Does anyone have a clue?

Upvotes: 14

Views: 35918

Answers (7)

saba
saba

Reputation: 498

in my case i added the below dependency with version, it caused all tests to fail. so i removed version tag.

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <version>5.6.3</version>
            <scope>test</scope>
        </dependency>

changed to :

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>

Upvotes: 0

Vitaly Chura
Vitaly Chura

Reputation: 860

I had to update spring-test version from 5.2.19.RELEASE to 5.3.17.

Not sure why TestContextAnnotationUtils class was not included in 5.2.19.RELEASE.

Upvotes: 1

saba
saba

Reputation: 498

in my case the library version in my pom.xml had conflict with spring boot version so i removed the version from my dependency and let the spring use the configured version by default.

i changed :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-test-autoconfigure</artifactId>
    <version>2.6.2</version>
    <scope>test</scope>
</dependency>

to :

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-test-autoconfigure</artifactId>
        <scope>test</scope>
    </dependency> 

Upvotes: 0

Oozeerally
Oozeerally

Reputation: 932

What resolved this issue for me was upgrading my spring-test dependency version from 5.2.9.RELEASE to 5.3.8

Upvotes: 13

Sandeep Jain
Sandeep Jain

Reputation: 1261

The problem described is related to conflicts between different Maven dependencies. We have had the same problem while trying to use the latest version of Spring Boot.

After analyzing the dependency tree and listing of dependencies you may get which is going out of version. Try to exclude from there and include as stand alone which help us getting in sync.

Maven commands:

mvn dependency:tree
mvn dependency:list

Upvotes: 3

Ivan dal Bosco
Ivan dal Bosco

Reputation: 3559

Marten Deinum's comment was correct : a dependency created havoc among the Spring JARs' versions. With Camel 3.6.0, Spring Boot 2.3.5.RELEASE was OK but Spring Boot 2.4.2 was not. Upgrading Camel to 3.7.1 did the trick.

Upvotes: 2

LoBo
LoBo

Reputation: 212

Seems that you are missing dependencies. The class org.springframework.test.context.TestContextAnnotationUtils referenced from spring-boot-starter-test-2.4.2 is located in

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.3</version>
    </dependency>

Upvotes: 1

Related Questions