【问题标题】:How to execute junit test case sequentially如何顺序执行junit测试用例
【发布时间】:2018-04-23 16:07:22
【问题描述】:

我正在编写用于创建和更新数据的集成测试用例

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyApplication.class, webEnvironment = 
SpringBootTest.WebEnvironment.DEFINED_PORT)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyIntegrationTest {

private String baseUrl="http://192.168.6.177/api/v1/";
@Autowired
TestRestTemplate restTemplate;
Long createdId;        // trying to set ID which is coming after test1_AddData

@Test
public void test1_AddData() throws Exception {
    ABC abc = new ABC("Name");
    HttpEntity<ABC> requestBodyData = new HttpEntity<>(ABC);
    ParameterizedTypeReference<RestTemplateResponseEnvelope<ABC>> typeReference =
            new ParameterizedTypeReference<RestTemplateResponseEnvelope<ABC>>() {
            };

    ResponseEntity<RestTemplateResponseEnvelope<ABC>> response = restTemplate.exchange(
            baseUrl + "/presenceType",
            HttpMethod.POST, requestBodyData, typeReference);

    Assert.assertTrue(HttpStatus.CREATED.equals(response.getStatusCode()));
    createdId = response.getBody().getData().getId();
}


@Test
public void test2_updateData() throws Exception {


    ABC abc = new ABC("NEW NAME");
    System.out.println("------------------------------------------" + createdId);    /// it is giving null 
    HttpEntity<ABC> requestBodyData = new HttpEntity<>(ABC);
    ResponseEntity<ABC> response = restTemplate.exchange(
            baseUrl + "/presenceType/" + createdId,
            HttpMethod.PUT, requestBodyData, ABC.class);
    Assert.assertTrue(HttpStatus.OK.equals(response.getStatusCode()));
    createdId = response.getBody().getId();
}

 }

我的执行结果 ------------------------------------------------------空

执行此操作需要做什么,即在执行第一个函数后调用第二个函数。 注意:代码还包含删除方法,需要在第三个之后调用。

【问题讨论】:

  • Long createdId; 更改为static Long createdId;。 JUnit 将在测试之间丢弃所有其他内容。

标签: spring junit integration-testing


【解决方案1】:

虽然在测试中修复顺序不是一个好习惯。但是如果你使用的是 4.11 以上版本的 JUnit,它有注解 @FixMethodOrder。

您可以按方法名称设置顺序。

例子:

import org.junit.runners.MethodSorters;
import org.junit.FixMethodOrder;
import org.junit.Test;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OrderTest {

    @Test
    public void test1() {
        System.out.println("test1");
    }

    @Test
    public void test2() {
        System.out.println("test2");
    }
}

进一步阅读@FixMethodOder

Junit Git 页面:https://github.com/junit-team/junit4/wiki/test-execution-order

自定义实现:https://memorynotfound.com/run-junit-tests-method-order/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多