我有一个非常简单的存储库测试,当我使用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")); } }
您使用了错误的@Test注释。
@Test
当使用SpringExtension和JUnit Jupiter(JUnit 5)时,必须使用import org.junit.jupiter.api.Test;代替import org.junit.Test;。
SpringExtension
import org.junit.jupiter.api.Test;
import org.junit.Test;