我想在所有测试之前在我的数据库中插入一次。这就是我在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)
简短回答:您不能注入静态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是否有某种原因不能超时? 我想这样做: 编辑:添加“静态”