Spring Boot Testing Concepts: Difference between revisions
Jump to navigation
Jump to search
(11 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=External= | |||
* https://www.baeldung.com/spring-boot-testing | |||
* https://spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-1-4 | |||
* https://www.baeldung.com/injecting-mocks-in-spring | |||
* https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing | |||
=Internal= | =Internal= | ||
* [[Spring_Boot_Concepts#Testing|Spring Boot Concepts]] | * [[Spring_Boot_Concepts#Testing|Spring Boot Concepts]] | ||
* [[Spring_Framework_Testing_Concepts#Spring_Boot_Testing_Concepts|Spring Framework Testing Concepts]] | * [[Spring_Framework_Testing_Concepts#Spring_Boot_Testing_Concepts|Spring Framework Testing Concepts]] | ||
=Overview= | =Overview= | ||
=Dependencies= | =Dependencies= | ||
Line 22: | Line 25: | ||
=Annotations= | =Annotations= | ||
Required: | |||
[[@ | * [[@SpringBootTest]] - this is required, otherwise beans won't get injected in our tests. | ||
* [[Spring_Boot_Mockito_Support#.40MockBean|@MockBean]] - automatically injects Mockito mocks. | |||
[[@RunWith]](SpringRunner.class) | Optional: | ||
<Font color=darkgray> | |||
* [[@WebMvcTest]] more research | |||
* [[@RunWith]](SpringRunner.class) more research | |||
* [[@IntegrationTest]] more research | |||
* [[@WebIntegrationTest]] more research | |||
</Font> | |||
=Spring Boot Mockito Support= | |||
{{Internal|Spring Boot Mockito Support|Spring Boot Mockito Support}} | |||
=The Default Generated XyzApplicationTests= | |||
Spring Initializr creates a | |||
<syntaxhighlight lang='java'> | |||
@SpringBootTest | |||
class XyzApplicationTests { | |||
@Test | |||
void contextLoads() { | |||
} | |||
} | |||
</syntaxhighlight> | |||
<font color=darkgray>How does this work? How is this useful? Does it use name conventions?</font> | |||
=SpringBoot Test Example= | =SpringBoot Test Example= | ||
<syntaxhighlight lang='java'> | <syntaxhighlight lang='java'> | ||
@SpringBootTest | @SpringBootTest | ||
public class MyTests { | public class MyTests { | ||
Line 44: | Line 68: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
For an example of how to use Mockito mocks, see: {{Internal|Spring_Boot_Mockito_Support#Overview|Spring Boot Mockito Support}} | |||
=Testing Logging Configuration= | =Testing Logging Configuration= | ||
By default, test logging is executed by [[Logback]]. | By default, test logging is executed by [[Logback]]. | ||
Latest revision as of 02:44, 3 October 2021
External
- https://www.baeldung.com/spring-boot-testing
- https://spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-1-4
- https://www.baeldung.com/injecting-mocks-in-spring
- https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing
Internal
Overview
Dependencies
Use:
dependencies {
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
This started dependency pulls everything that is needed to write JUnit tests.
Annotations
Required:
- @SpringBootTest - this is required, otherwise beans won't get injected in our tests.
- @MockBean - automatically injects Mockito mocks.
Optional:
- @WebMvcTest more research
- @RunWith(SpringRunner.class) more research
- @IntegrationTest more research
- @WebIntegrationTest more research
Spring Boot Mockito Support
The Default Generated XyzApplicationTests
Spring Initializr creates a
@SpringBootTest
class XyzApplicationTests {
@Test
void contextLoads() {
}
}
How does this work? How is this useful? Does it use name conventions?
SpringBoot Test Example
@SpringBootTest
public class MyTests {
@Autowired
private SomeComponent someComponentWeWantToTest;
// ...
}
For an example of how to use Mockito mocks, see:
Testing Logging Configuration
By default, test logging is executed by Logback.