contextLoads 方法在 Spring Boot Junit Testcases 中的用途是什么?

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

Sonarqube抱怨
“添加一个嵌套的注释,解释为什么这个方法是空的,抛出一个不受支持的OperationException或完成实现。

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


答案 1

当您使用 Spring 初始值设定项构建 Spring 引导应用程序时。它使用空方法自动为您创建一个测试类。contextLoads

@SpringBootTest
class ApplicationContextTest {

  @Test
  void contextLoads() {
  }
}

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

如果 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();
    }
}

答案 2

使用不同的流道,

如果您使用的是 ,请使用替代方法,例如 或 更确切地说,然后SpringRunner.classMockitoJUnitRunner.classMockitoJunitRunner.classSpringRunner.class

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

推荐