Question: I am very new to SpringBoot. I need to understand how to write an integration test using SpringBoot. I have seen some examples on the Internet which use the @IntegrationTest annotation whereas some other examples which use the @SpringBootTest annotation. 

I am just wondering what is the difference between the two? 

Which is the best way of writing an integration test in Spring boot?

Answer: 
The `IntegrationTest` was deprecated sine spring boot 1.4, so the suggestion is using `SpringBootTest` after 1.4

> 
> Deprecated as of 1.4 in favor of org.springframework.boot.test.context.SpringBootTest with webEnvironment=RANDOM\_PORT or webEnvironment=DEFINED\_PORT.
> 
> 
>
Basic template for writing the integration tests in springboot.
the sql group is additional annotation. When ever you want to execute the particular sql queries before and after method run so u can use @SqlGroup annotation.

```
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MainApplication.class,
            webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@SqlGroup({
    @Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, 
         scripts = "classpath:beforeTestRun.sql"),
    @Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, 
         scripts = "classpath:afterTestRun.sql")})

public class CustomerControllerIntTest {}

```