gpt4 book ai didi

java - Spring测试NoSuchBeanDefinitionException

转载 作者:行者123 更新时间:2023-12-01 21:54:40 25 4
gpt4 key购买 nike

我知道有很多类似的问题,但似乎没有一个能帮助我或让我理解这个问题。我也是 Spring 新手,所以这就是为什么我可能会遇到这样的初学者问题。

问题:

我有一个(目前非常基本的)Spring 应用程序,运行良好。但测试不会,因为我遇到了 NoSuchBeanDefinitionException 并且我不明白为什么。我的测试是否应该找不到与我的应用程序通常找到的相同的 bean?我认为注释可以解决这个问题?

我的应用程序非常基本:一个 Controller 、一种方法和一种服务一种方法。没有依赖性,什么都没有。最基本的设置来自https://start.spring.io/ 。然后我就有一个 Controller :

@RestController
@RequestMapping("/location")
public class LocationController
{
@Autowired
LocationService locationService;

@RequestMapping(value = "/get/{lat}/{lon}", method = RequestMethod.GET)
public LocationData getLocationInfo(@PathVariable Double lat, @PathVariable Double lon) throws Exception {
return locationService.getByCoordinates(lat, lon);
}
}

对于服务,我的接口(interface)(只是简单的公共(public)接口(interface)LocationService)和实现:

@Service
public class LocationServiceImpl implements LocationService {
public LocationData getByCoordinates(Double lat, Double lon) {
return new LocationData(lat, lon, "Test");
}
}

我知道我可能可以注入(inject)一个模拟服务以使其工作,或者使用测试配置并在那里定义一些 bean 设置。但它不应该开箱即用吗?为什么找不到我的服务?

编辑:

当然还有测试:

@RunWith(SpringRunner.class)
@WebMvcTest(LocationController.class)
public class LocationControllerTest {
@Autowired
private MockMvc mvc;

@Test
public void whenGetLocation_thenReturnJsonArray() throws Exception {
String resp = mvc.perform(get("/location/get/1.00/2.00"))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON));
}
}

最佳答案

您很可能在测试中缺少@ContextConfiguration。 Spring 单元测试运行程序不知道有 LocationServiceImpl。

关于java - Spring测试NoSuchBeanDefinitionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58747479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com