可以使用@FixMethodOrder来指定测试用例运行的顺序,这个注解中有三个属性值:
MethdSorters.JMV,按照JVM得到的方法顺序,也就是代码中定义的方法顺序。
MethodSorters.DEFAULT:默认的顺序。
MethodSorters.NAME_ASCENDING:按方法名字母顺序执行。
一般是使用MethodSorters.NAME_ASCENDING可以实现控制测试用例的执行顺序。
但是使用此注解后,测试用例的方法命名必须遵循一定的规则,即testXXX,这里的x是代指大写字母。
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class DeviceModelServeControllerTest {
@Autowired
MockMvc mvc;
private static final String URI = Constants.URI_API_PREFIX + Constants.URI_DEVICE_MODEL_SERVICE;
private SecurityApi securityApi = new SecurityApi();
private String token = "";
private Logger logger = LoggerFactory.getLogger(getClass());
private DeviceModelServe serve;
private List<DeviceModelServeParam> params = new ArrayList<>();
@Before
public void setUp() {
token = securityApi.login("admin", "siid0531");
serve = new DeviceModelServe("xcwuyvf"+(int)(Math.random()*10), 4, "zxabj", (short) 1);
for (int i = 0; i < 3; i++) {
DeviceModelServeParam p = new DeviceModelServeParam("ertg" + i, "xwleh" + i,
"kxweb" + i, (short) 1, (short) 0);
params.add(p);
}
serve.setParam(params);
}
@Test
public void testA() throws Exception {
String url = URI + "/all/?modelId=4";
MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(url)
.header("Authorization", "Bearer " + token)
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
MockHttpServletResponse response = mvcResult.getResponse();
int status = response.getStatus();
String rs = new String(response.getContentAsByteArray());
logger.info("测试获取某个设备服务调用的接口——————");
System.out.println("A");
logger.info("状态码:" + status);
logger.info("测试结果:" + rs);
}
@Test
public void testB() throws Exception {
String url = URI;
MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(url)
.header("Authorization", "Bearer " + token)
.contentType(MediaType.APPLICATION_JSON).content(JSONObject.toJSONString(serve))
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
MockHttpServletResponse response = mvcResult.getResponse();
int status = response.getStatus();
String rs = response.getContentAsString();
logger.info("测试新增设备服务接口——————");
System.out.println("B");
logger.info("状态码:" + status);
logger.info("测试结果:" + rs);
}
@Test
public void testC() throws Exception {
String url = URI;
serve.setId(22);
serve.setModelId(4);
DeviceModelServeParam p = new DeviceModelServeParam("xawrf", "grtg",
"kxweb", (short) 1, (short) 0);
p.setId(63);
DeviceModelServeParam p1 = new DeviceModelServeParam("erf", "fgwe45y",
"infur", (short) 1, (short) 0);
p1.setId(64);
params.clear();
params.add(p);
params.add(p1);
serve.setParam(params);
MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(url)
.header("Authorization", "Bearer " + token)
.contentType(MediaType.APPLICATION_JSON).content(JSONObject.toJSONString(serve))
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
MockHttpServletResponse response = mvcResult.getResponse();
int status = response.getStatus();
logger.info("测试修改设备服务调用接口——————");
System.out.println("C");
logger.info("状态码:" + status);
}
@Test
public void testD() throws Exception {
String url = URI + "/24";
MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(url)
.header("Authorization", "Bearer " + token)
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
MockHttpServletResponse response = mvcResult.getResponse();
int status = response.getStatus();
logger.info("测试删除设备服务调用接口——————");
System.out.println("D");
logger.info("状态码:" + status);
}
}
运行后,如下图所示顺序