当前位置: 首页 > 知识库问答 >
问题:

BeforeClass中的NullPointerException(spring boot)

姜玮
2023-03-14

我想在所有测试之前在我的数据库中插入一次。这就是我在setUp()方法中尝试做的事情。但是得到了nullpointer。Spring boot版本是1.5.1.发行版。有什么想法吗?这是来自我的测试类:

@Autowired
    private static UserRepository userRepository;

    @BeforeClass
    public static void setUp() {
        User user = User.
                .builder()
                .id(10)
                .name("John")
                .build();

        userRepository.deleteAll(); //NullPointerException at this step
        userRepository.save(user);
    }
@Entity
@Table(schema="test", name = "TBL_USERS")
@AllArgsConstructor
@Builder
@Data public class User implements Persistable<String>{

    @Id
    @Column(name = "ID", columnDefinition = "decimal")
    private String id;

    @Column(name = "NAME", columnDefinition = "char", nullable = false)
    private String name;

    ...
    }
public interface UserRepository extends JpaRepository<User, String> {}
java.lang.NullPointerException
    at com.company.myapp.get.GetUserTest.setUp(GetUserTest.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

共有1个答案

周奇文
2023-03-14

简短回答:您不能注入静态Userrepository(@autowired)

请阅读这里的原因,我们不能注入静态字段

 类似资料:
  • 我们从官方的TestNG文档中了解到: 在调用当前类中的第一个测试方法之前,将运行带注释的方法。 将在运行属于标记中的类的任何测试方法之前运行带注释的方法。

  • 当尝试测试Java客户端的方法时,我收到了一个关于RepoService saveAndFlush方法的NPE。 然后进行我期望得到一个异常的测试 然后,在来自ClientX的这条线路上使用NPE进行测试失败 有人知道为什么serviceX或repoX是空的/得到NPE吗?

  • 问题内容: 我正在使用Android兼容性库,偶尔会感到奇怪: 显然,我在做 一些 错误的操作,以允许它进入可能会像这样崩溃的状态,但是我不知道该怎么办。在相关的代码中没有提供我任何线索。我猜是某种在代码中的那一点?但这似乎是不可能的,因为该活动已经在屏幕上了,并且我没有在其中添加任何片段- 只需在中进行切换即可。 问题答案: 好的,在将我的头撞到砖墙上一段时间后,我发现这与我的片段的声明直接相关

  • 我我试图建立我在这里找到的网站,当我运行应用程序时,我得到了 创建名为'dataSource'的bean时出错org.o7planning.springmvcshoppingcart.config.Application ContextConfig:通过工厂方法实例化Bean失败;嵌套异常org.springframework.beans.BeanInstantiationException:实例

  • 我对Android开发完全陌生,所以如果我问的很简单,我先道歉,过去几个小时我一直在谷歌上搜索,运气不好。 在我的 MainActivity 中,我引用了警报接收器.class意图中,然后进入挂起的接收器,最后将其设置为警报管理器。我这样做是为了设置警报,这工作正常,当警报被触发时,异常发生。 然后在AlarmReceiver.class中扩展BroadcastReceiver,并进行SDK调用。

  • JUnit中带有@Test注释的测试可以以毫秒为单位设置超时,例如: 然而,我似乎找不到一种方法来设置超时(或@BeforeClass)。 还有其他明智的方法吗?我想知道@BeforeClass是否有某种原因不能超时? 我想这样做: 编辑:添加“静态”