在Spring Boot Junit Testcases中使用contextLoads方法有什么用?

时间:2018-04-17 21:44:23

标签: java spring-boot junit testcase spring-boot-test

此方法在我的所有JUnit测试用例中都是空的。这种方法有什么用?

Sonarqube正在抱怨 “添加一个嵌套注释,解释为什么此方法为空,抛出UnsupportedOperationException或完成实现。”

我可以通过添加一些评论来绕过这一点,但我只是想知道为什么它是必要的。

2 个答案:

答案 0 :(得分:1)

使用其他跑步者,

如果您使用的是SpringRunner.class,请使用MockitoJUnitRunner.classMockitoJunitRunner.class之类的替代名称,而不要使用SpringRunner.class

@Runwith(SpringRunner.class)
 @Runwith(JUnit4ClassRunner.class)
 @Runwith(MockitoJUnit4Runner.class)
 @Runwith(MockitoJUnitRunner.class)

答案 1 :(得分:1)

当您使用 Spring Initializer 构建 Spring 启动应用程序时。它使用 contextLoads 空方法自动为您创建一个测试类。

@SpringBootTest
class ApplicationContextTest {

  @Test
  void contextLoads() {
  }
}

注意 @SpringBootTest 注释的使用,它告诉 Spring Boot 查找主配置类(例如带有 @SpringBootApplication 的类)并使用它来启动 Spring 应用程序上下文。 Empty contextLoads() 是用于验证应用程序是否能够成功加载 Spring 上下文的测试。

如果 sonarqube 抱怨空方法,那么您可以执行以下操作来验证您的控制器或服务 bean 上下文:-

@SpringBootTest
public class ApplicationContextTest {

    @Autowired
    private MyController myController;

    @Autowired
    private MyService myService;

    @Test
    public void contextLoads() throws Exception {
        assertThat(myController).isNotNull();
        assertThat(myService).isNotNull();
    }
}