Spring boot单元测试不回滚

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32768743/article/details/86661614

在经历了N多bug后,终于决定每写一个feat,都至少写一个unit test。
用了spring boot的单元测试后,发现数据库居然多了测试数据。
最后通过加一个注解Transactional解决
测试基类

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment= RANDOM_PORT)
@Transactional
public abstract class BaseTest {
    private String token;
    private String base = "/api";
    @Autowired
    private TestRestTemplate restTemplate;
    private Response response = null;
    protected String expected;
    protected String actual;
    private static ParameterizedTypeReference<Response> typeRef = new ParameterizedTypeReference<Response>() {
    };
    protected String get(String url) {
        response = restTemplate.exchange(url, GET, null, typeRef).getBody();
        return JSON.toJSONString(response);
    }

    protected String post(String url, String body) {
        Response response = restTemplate.exchange(url, POST, getHttpEntity(body), typeRef).getBody();
        return JSON.toJSONString(response);
    }

    protected String put(String url, String body) {
        Response response = restTemplate.exchange(url, PUT, getHttpEntity(body), typeRef).getBody();
        return JSON.toJSONString(response);
    }

    protected String delete(String url) {
        response = restTemplate.exchange(url, DELETE, null, typeRef).getBody();
        return JSON.toJSONString(response);
    }

    private HttpEntity<String> getHttpEntity(String body) {
        HttpHeaders headers = new HttpHeaders();
        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
        headers.setContentType(type);
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        headers.add("Origin", "http://test.xxxx.com");
        return new HttpEntity<>(body, headers);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_32768743/article/details/86661614