其他分享
首页 > 其他分享> > 8.3 单元测试,包括security测试

8.3 单元测试,包括security测试

作者:互联网

创建一个Spring Boot 项目时会自动创建一个test文件夹,所有的测试都在其中进行。

依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

 

 

 如果需要测试security的话还需要添加依赖

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>

 

例子

@SpringBootTest
@AutoConfigureMockMvc //该注解表示MockMvc由spring容器构建。如果不加入这个注释的话无法使用 mvc
public class SafeBoxBetaResourceTest {
    @Autowired
    protected MockMvc mvc;
    @Autowired
    protected SafeBoxService safeBoxService;


    private static JSONArray jsonArray = new JSONArray(); 
  /* json list, 如
  {
    "items": [
      "Safebox content 01",
      "Safebox content 02",
      "Safebox content 03"
    ]
  }
  */ @BeforeAll 表示应在当前测试类中的所有测试之前执行一次(就算同时运行当前测试类中的多个方法也只运行一次)注解方法
    // 注解的方法必须是静态方法,否则它将引发运行时错误 public static void setup() throws Exception { // Mock Entities jsonArray.put("Safebox content 01"); jsonArray.put("Safebox content 02"); jsonArray.put("Safebox content 03"); } // create safebox @Test
  @WithMockUser(username = "user", password = "passwod123", role = {"ADMIN"})
  // 模拟一个用户, 也就“假装”当前登录了用户
void create_safe_box_return_200() throws Exception {
        var safeBoxJson = new JSONObject();
        safeBoxJson.put("name", "Secure safebox 01");
        safeBoxJson.put("password", "extremelySecurePassword1!");
       var request = post(访问地址) // 可以是 get,put,delete .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) .content(safeBoxJson.toString()); // request body
mvc.perform(request) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").isNotEmpty()); // jsonPath("$.id") = json response 中的 id 值
}
  
}

@WithAnonymousUser是用来模拟匿名用户。等同于@WithMockUser(roles = {"ANONYMOUS"}),也等同于@WithMockUser(authorities = {"ROLE_ANONYMOUS"})

@WithUserDetails 当通过UserDetailsService 加载的用户的时候使用。@WithUserDetails("felord")当我们执行单元测试时,将通过UserDetailsService 的loadUserByUsername方法查找用户名为felord的用户

 

//

标签:8.3,单元测试,content,test,safeBoxJson,put,Safebox,security
来源: https://www.cnblogs.com/ShengLiu/p/16492636.html