一尘不染

从JUnit4迁移到JUnit5会在@Autowired存储库上引发NullPointerException

spring-boot

我有一个非常简单的存储库测试,当我使用JUnit的4“
@RunWith(SpringRunner.Class)”时,它运行得很好。当我尝试使用提供的示例中的“
@ExtendWith”时,尝试使用存储库时出现NullPointerException。使用后一个注释时,似乎“
@Autowire”没有注入存储库。这是pom.xml文件和堆栈跟踪:https :
//pastebin.com/4KSsgLfb

实体类别:

package org.tim.entities;

import lombok.AccessLevel;
import lombok.Data;
import lombok.NonNull;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;

@Entity
@Data
public class ExampleEntity {

@Id
@Setter(AccessLevel.NONE)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@NotNull
@NonNull
private String name;

}

储存库类别:

package org.tim.repositories;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.tim.entities.ExampleEntity;

@Repository
public interface ExampleRepository extends JpaRepository<ExampleEntity, Long> {
}

测试类别:

package org.tim;

import org.junit.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.tim.entities.ExampleEntity;
import org.tim.repositories.ExampleRepository;


@ExtendWith(SpringExtension.class)
@DataJpaTest
public class exampleTestClass {

@Autowired
private ExampleRepository exampleRepository;

@Test
public void exampleTest() {
    exampleRepository.save(new ExampleEntity("name"));
}
}

阅读 871

收藏
2020-05-30

共1个答案

一尘不染

您使用了错误的@Test注释。

当使用SpringExtension和JUnit Jupiter(JUnit 5)时,必须使用import org.junit.jupiter.api.Test;代替import org.junit.Test;

2020-05-30