【问题标题】:Why .isNotNull(); assertions fails even though I have a controller class?为什么 .isNotNull();即使我有一个控制器类,断言也会失败?
【发布时间】:2021-03-01 11:09:50
【问题描述】:

我是 Spring Boot 和测试新手。我目前正在学习 baeldung 的教程 (https://spring.io/guides/gs/testing-web/),我遇到了这个错误。

事实上,当我使用 isNull() 方法时它通过了。但我不明白这一点,因为我的控制器类有映射等等。为什么会为空?

这是我的控制器类

或者也许这不是这个测试应该如何进行的?但是他们在baeldung中显示如下

感谢任何帮助。

最好的,

【问题讨论】:

  • 此变量为空,因为您的测试不加载 Spring 上下文。您应该按照 Hiren 的建议设置测试。

标签: java spring-boot testing pivotal-web-services


【解决方案1】:

如果您想使用 spring 上下文运行测试用例,您需要在您的测试类中提供 @SpringBootTest 注释(即,而不是在您的测试类 Smoke 中提供 @SpringBootConfiguration)。除了@SpringBootTest 之外的其他选项如下。

对于junit4:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class YourTestClass {}

对于 junit 5:

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class YourTestClass

SpringTestConfiguration 类包含您需要自动装配的所有 bean。有关 SpringRunner 与 SpringBootTest 的更多详细信息,请阅读article

【讨论】:

  • 你好。谢谢海伦的回答。当我使用@SpringBootTest,我得到错误
  • java.lang.IllegalStateException: Unable to find a "@SpringBootConfiguration" ,您需要在测试中使用“@ContextConfiguration”或“@SpringBootTest(classes=...)”
  • 是的,你需要删除@SpringBootConfiguration 注解
  • 还有一个建议是,如果你想对你的控制器 API 进行集成测试,你应该考虑 MockMvc,正如我在我的 ansser 中分享的链接中所展示的那样
  • 我删除了@SpringBootConfiguration 注释。现在我只有“@SpringBootTest”但我得到了错误
【解决方案2】:

你试过 assertNotNull(studentController) 吗?

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 2020-12-31
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多