Spring的测试课程无法正常工作

问题描述

我想测试我的控制器类。但是我无法运行springBootTest类。我的项目是用Spring Boot写的。我们正在使用Spring Boot编写REST API。 当我尝试执行以下测试课程时。我仍然从终端得到以下提示。

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.context.SpringBootTest;

import static org.assertj.core.api.Assertions.assertThat;



/*
 *
 *  @A Sabirov Jakhongir
 *
 */


@SpringBootTest
@WebMvcTest
public class PrivilegesControllerTest {

    @Autowired
    private PrivilegesController privilegesController;


    @Test
    public void add() {
        assertThat(privilegesController).isNotNull();

    }
}

enter image description here

我将所有需要的依赖项放在这里,以进行项目测试。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher -->
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.6.2</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.3.2</version>
    <scope>test</scope>
</dependency>

测试类无法正常工作的原因。

解决方法

使用Junit5@SpringBootTest将加载整个应用程序,我之前也遇到过同样的问题,您可以找到有关问题here的详细信息并回答here。 / p>

解决方案是在不使用@SpringBootTest的情况下使用测试。 您的测试课程的解决方案如下。

@ExtendWith(MockitoExtension.class)
public class PrivilegesControllerTest {

    @InjectMocks
    private PrivilegesController privilegesController;


    @Test
    public void add() {
        assertThat(privilegesController).isNotNull();

    }
}

您也可以使用@ExtendWith(SpringExtension.class)代替@ExtendWith(MockitoExtension.class)

,

要测试Spring Boot应用程序是创建您的控制器,请使用get_dorms批注,要测试控制器的行为或责任,最好使用{ {1}}。无需将两个注释都注释到一个类中。

有两种情况可以测试控制者的责任。

  1. 运行服务器时
  2. 没有服务器

对于第一种情况,您可以使用public function get_dorms(){ $this->db->where('id NOT IN(select dorm_id from reserves)'); $this->db->order_by('id','DESC'); $query = $this->db->get('dorms'); return $query->result_array(); } 来启动具有随机端口的服务器。

对于第二种情况,请使用@SpringBootTest测试Web层。

所有测试用例均带有以下签名:

@WebMvcTest

您还可以阅读Spring Boot https://spring.io/guides/gs/testing-web/的官方文档

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...