【发布时间】:2019-03-24 14:39:44
【问题描述】:
我有一个测试类,其中@Autowireds 有两个不同的类。其中一个是@Service,另一个是@RestController。
当我使用@Service 时,它工作正常。
当我使用 @RestController 时,它会抛出 NullPointerException。
它不能连接控制器有什么原因吗?我认为它可能与创建 Web 上下文有关,但我也尝试添加 SpringBootTest 和指向 MOCK(和其他)的 webEnvironment 以查看是否可以启动它。
我也尝试过 MockMvc 的东西,但我不确定它应该如何工作。
有什么方法可以轻松调用其中一个控制器来执行完整的集成测试用例吗?
@Autowired
private ThingService tservice;
@Autowired
private ThingController tconn;
@Test
public void testRunThing() {
Thing t = new Thing(1, "Test");
tservice.configureThing(t);
Thing t2 = new Thing(1, "Second thing");
tconn.getThing(t2);
t3 = tservice.findThing(1);
assertEqual(t3.getValue(), "Second thing");
}
tservice 函数做了一些工作,包括最终持久化到数据库(在本例中是 H2,它又通过存储库自动连接)。
tconn 函数处理更新,就像它被发送到其余端点一样(在这种情况下,它会将 ID 为 1 的“事物”更新为新的字符串值)
空指针出现在tconn.getThing() 调用中。
【问题讨论】:
-
能否将测试类添加到问题中?
-
@Boris 我添加了一些精简示例
-
好的,类级别的注解是什么?
标签: java spring-boot