Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
1de6f682
Commit
1de6f682
authored
May 08, 2019
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Document that JUnit 5 is the default
See gh-14736
parent
684a1c7a
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
61 additions
and
117 deletions
+61
-117
howto.adoc
...oot-project/spring-boot-docs/src/main/asciidoc/howto.adoc
+0
-1
spring-boot-features.adoc
...ing-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+59
-104
pom.xml
spring-boot-samples/spring-boot-sample-junit-jupiter/pom.xml
+2
-12
No files found.
spring-boot-project/spring-boot-docs/src/main/asciidoc/howto.adoc
View file @
1de6f682
...
@@ -623,7 +623,6 @@ shown in the following example:
...
@@ -623,7 +623,6 @@ shown in the following example:
[source,java,indent=0,subs="verbatim,quotes,attributes"]
[source,java,indent=0,subs="verbatim,quotes,attributes"]
----
----
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
public class MyWebIntegrationTests {
public class MyWebIntegrationTests {
...
...
spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
1de6f682
...
@@ -6809,8 +6809,12 @@ application. Test support is provided by two modules: `spring-boot-test` contain
...
@@ -6809,8 +6809,12 @@ application. Test support is provided by two modules: `spring-boot-test` contain
items, and `spring-boot-test-autoconfigure` supports auto-configuration for tests.
items, and `spring-boot-test-autoconfigure` supports auto-configuration for tests.
Most developers use the `spring-boot-starter-test` "`Starter`", which imports both Spring
Most developers use the `spring-boot-starter-test` "`Starter`", which imports both Spring
Boot test modules as well as JUnit, AssertJ, Hamcrest, and a number of other useful
Boot test modules as well as JUnit Jupiter, AssertJ, Hamcrest, and a number of other
libraries.
useful libraries.
TIP: The starter brings also the vintage engine so that you can run both JUnit 4 and Junit
5 tests. If you have migrated your tests to JUnit 5, consider excluding the vintage
engine.
...
@@ -6819,7 +6823,8 @@ libraries.
...
@@ -6819,7 +6823,8 @@ libraries.
The `spring-boot-starter-test` "`Starter`" (in the `test` `scope`) contains
The `spring-boot-starter-test` "`Starter`" (in the `test` `scope`) contains
the following provided libraries:
the following provided libraries:
* https://junit.org[JUnit 4]: The de-facto standard for unit testing Java applications.
* https://junit.org/junit5[JUnit 5] (including the vintage engine for backward
compatibility with JUnit 4: The de-facto standard for unit testing Java applications.
* {spring-reference}testing.html#integration-testing[Spring Test] & Spring Boot Test:
* {spring-reference}testing.html#integration-testing[Spring Test] & Spring Boot Test:
Utilities and integration test support for Spring Boot applications.
Utilities and integration test support for Spring Boot applications.
* https://joel-costigliola.github.io/assertj/[AssertJ]: A fluent assertion library.
* https://joel-costigliola.github.io/assertj/[AssertJ]: A fluent assertion library.
...
@@ -7115,19 +7120,16 @@ implementation:
...
@@ -7115,19 +7120,16 @@ implementation:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.*;
import org.junit.jupiter.api.Test;
import org.junit.runner.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.boot.test.context.*;
import org.springframework.boot.test.context.*;
import org.springframework.boot.test.mock.mockito.*;
import org.springframework.boot.test.mock.mockito.*;
import org.springframework.test.context.junit4.*;
import static org.assertj.core.api.Assertions.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.BDDMockito.*;
import static org.mockito.BDDMockito.*;
@RunWith(SpringRunner.class)
@SpringBootTest
@SpringBootTest
public
class MyTests {
class MyTests {
@MockBean
@MockBean
private RemoteService remoteService;
private RemoteService remoteService;
...
@@ -7136,7 +7138,7 @@ implementation:
...
@@ -7136,7 +7138,7 @@ implementation:
private Reverser reverser;
private Reverser reverser;
@Test
@Test
public
void exampleTest() {
void exampleTest() {
// RemoteService has been injected into the reverser bean
// RemoteService has been injected into the reverser bean
given(this.remoteService.someCall()).willReturn("mock");
given(this.remoteService.someCall()).willReturn("mock");
String reverse = reverser.reverseSomeCall();
String reverse = reverser.reverseSomeCall();
...
@@ -7219,25 +7221,22 @@ Strings respectively. Any helper fields on the test class can be `@Autowired` wh
...
@@ -7219,25 +7221,22 @@ Strings respectively. Any helper fields on the test class can be `@Autowired` wh
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.*;
import org.junit.jupiter.api.Test;
import org.junit.runner.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.boot.test.autoconfigure.json.*;
import org.springframework.boot.test.autoconfigure.json.*;
import org.springframework.boot.test.context.*;
import org.springframework.boot.test.context.*;
import org.springframework.boot.test.json.*;
import org.springframework.boot.test.json.*;
import org.springframework.test.context.junit4.*;
import static org.assertj.core.api.Assertions.*;
import static org.assertj.core.api.Assertions.*;
@RunWith(SpringRunner.class)
@JsonTest
@JsonTest
public
class MyJsonTests {
class MyJsonTests {
@Autowired
@Autowired
private JacksonTester<VehicleDetails> json;
private JacksonTester<VehicleDetails> json;
@Test
@Test
public
void testSerialize() throws Exception {
void testSerialize() throws Exception {
VehicleDetails details = new VehicleDetails("Honda", "Civic");
VehicleDetails details = new VehicleDetails("Honda", "Civic");
// Assert against a `.json` file in the same package as the test
// Assert against a `.json` file in the same package as the test
assertThat(this.json.write(details)).isEqualToJson("expected.json");
assertThat(this.json.write(details)).isEqualToJson("expected.json");
...
@@ -7303,8 +7302,7 @@ uses `MockMvc`:
...
@@ -7303,8 +7302,7 @@ uses `MockMvc`:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.*;
import org.junit.jupiter.api.*;
import org.junit.runner.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.boot.test.autoconfigure.web.servlet.*;
import org.springframework.boot.test.autoconfigure.web.servlet.*;
import org.springframework.boot.test.mock.mockito.*;
import org.springframework.boot.test.mock.mockito.*;
...
@@ -7314,9 +7312,8 @@ uses `MockMvc`:
...
@@ -7314,9 +7312,8 @@ uses `MockMvc`:
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@RunWith(SpringRunner.class)
@WebMvcTest(UserVehicleController.class)
@WebMvcTest(UserVehicleController.class)
public
class MyControllerTests {
class MyControllerTests {
@Autowired
@Autowired
private MockMvc mvc;
private MockMvc mvc;
...
@@ -7325,7 +7322,7 @@ uses `MockMvc`:
...
@@ -7325,7 +7322,7 @@ uses `MockMvc`:
private UserVehicleService userVehicleService;
private UserVehicleService userVehicleService;
@Test
@Test
public
void testExample() throws Exception {
void testExample() throws Exception {
given(this.userVehicleService.getVehicleDetails("sboot"))
given(this.userVehicleService.getVehicleDetails("sboot"))
.willReturn(new VehicleDetails("Honda", "Civic"));
.willReturn(new VehicleDetails("Honda", "Civic"));
this.mvc.perform(get("/sboot/vehicle").accept(MediaType.TEXT_PLAIN))
this.mvc.perform(get("/sboot/vehicle").accept(MediaType.TEXT_PLAIN))
...
@@ -7346,8 +7343,7 @@ bean and/or a `WebDriver` bean. The following example uses HtmlUnit:
...
@@ -7346,8 +7343,7 @@ bean and/or a `WebDriver` bean. The following example uses HtmlUnit:
[source,java,indent=0]
[source,java,indent=0]
----
----
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.*;
import org.junit.*;
import org.junit.jupiter.api.*;
import org.junit.runner.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.boot.test.autoconfigure.web.servlet.*;
import org.springframework.boot.test.autoconfigure.web.servlet.*;
import org.springframework.boot.test.mock.mockito.*;
import org.springframework.boot.test.mock.mockito.*;
...
@@ -7355,9 +7351,8 @@ bean and/or a `WebDriver` bean. The following example uses HtmlUnit:
...
@@ -7355,9 +7351,8 @@ bean and/or a `WebDriver` bean. The following example uses HtmlUnit:
import static org.assertj.core.api.Assertions.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.BDDMockito.*;
import static org.mockito.BDDMockito.*;
@RunWith(SpringRunner.class)
@WebMvcTest(UserVehicleController.class)
@WebMvcTest(UserVehicleController.class)
public
class MyHtmlUnitTests {
class MyHtmlUnitTests {
@Autowired
@Autowired
private WebClient webClient;
private WebClient webClient;
...
@@ -7366,7 +7361,7 @@ bean and/or a `WebDriver` bean. The following example uses HtmlUnit:
...
@@ -7366,7 +7361,7 @@ bean and/or a `WebDriver` bean. The following example uses HtmlUnit:
private UserVehicleService userVehicleService;
private UserVehicleService userVehicleService;
@Test
@Test
public
void testExample() throws Exception {
void testExample() throws Exception {
given(this.userVehicleService.getVehicleDetails("sboot"))
given(this.userVehicleService.getVehicleDetails("sboot"))
.willReturn(new VehicleDetails("Honda", "Civic"));
.willReturn(new VehicleDetails("Honda", "Civic"));
HtmlPage page = this.webClient.getPage("/sboot/vehicle.html");
HtmlPage page = this.webClient.getPage("/sboot/vehicle.html");
...
@@ -7425,18 +7420,15 @@ example shows a class that uses both `@WebFluxTest` and a `WebTestClient`:
...
@@ -7425,18 +7420,15 @@ example shows a class that uses both `@WebFluxTest` and a `WebTestClient`:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
import org.springframework.http.MediaType;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.reactive.server.WebTestClient;
import org.springframework.test.web.reactive.server.WebTestClient;
@RunWith(SpringRunner.class)
@WebFluxTest(UserVehicleController.class)
@WebFluxTest(UserVehicleController.class)
public
class MyControllerTests {
class MyControllerTests {
@Autowired
@Autowired
private WebTestClient webClient;
private WebTestClient webClient;
...
@@ -7445,7 +7437,7 @@ example shows a class that uses both `@WebFluxTest` and a `WebTestClient`:
...
@@ -7445,7 +7437,7 @@ example shows a class that uses both `@WebFluxTest` and a `WebTestClient`:
private UserVehicleService userVehicleService;
private UserVehicleService userVehicleService;
@Test
@Test
public
void testExample() throws Exception {
void testExample() throws Exception {
given(this.userVehicleService.getVehicleDetails("sboot"))
given(this.userVehicleService.getVehicleDetails("sboot"))
.willReturn(new VehicleDetails("Honda", "Civic"));
.willReturn(new VehicleDetails("Honda", "Civic"));
this.webClient.get().uri("/sboot/vehicle").accept(MediaType.TEXT_PLAIN)
this.webClient.get().uri("/sboot/vehicle").accept(MediaType.TEXT_PLAIN)
...
@@ -7492,17 +7484,14 @@ follows:
...
@@ -7492,17 +7484,14 @@ follows:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@DataJpaTest
@DataJpaTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public
class ExampleNonTransactionalTests {
class ExampleNonTransactionalTests {
}
}
----
----
...
@@ -7517,15 +7506,13 @@ shows the `@DataJpaTest` annotation in use:
...
@@ -7517,15 +7506,13 @@ shows the `@DataJpaTest` annotation in use:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.*;
import org.junit.jupiter.api.Test;
import org.junit.runner.*;
import org.springframework.boot.test.autoconfigure.orm.jpa.*;
import org.springframework.boot.test.autoconfigure.orm.jpa.*;
import static org.assertj.core.api.Assertions.*;
import static org.assertj.core.api.Assertions.*;
@RunWith(SpringRunner.class)
@DataJpaTest
@DataJpaTest
public
class ExampleRepositoryTests {
class ExampleRepositoryTests {
@Autowired
@Autowired
private TestEntityManager entityManager;
private TestEntityManager entityManager;
...
@@ -7534,7 +7521,7 @@ shows the `@DataJpaTest` annotation in use:
...
@@ -7534,7 +7521,7 @@ shows the `@DataJpaTest` annotation in use:
private UserRepository repository;
private UserRepository repository;
@Test
@Test
public
void testExample() throws Exception {
void testExample() throws Exception {
this.entityManager.persist(new User("sboot", "1234"));
this.entityManager.persist(new User("sboot", "1234"));
User user = this.repository.findByUsername("sboot");
User user = this.repository.findByUsername("sboot");
assertThat(user.getUsername()).isEqualTo("sboot");
assertThat(user.getUsername()).isEqualTo("sboot");
...
@@ -7581,17 +7568,14 @@ follows:
...
@@ -7581,17 +7568,14 @@ follows:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest;
import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@JdbcTest
@JdbcTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public
class ExampleNonTransactionalTests {
class ExampleNonTransactionalTests {
}
}
----
----
...
@@ -7643,14 +7627,11 @@ TIP: A list of the auto-configurations that are enabled by `@JooqTest` can be
...
@@ -7643,14 +7627,11 @@ TIP: A list of the auto-configurations that are enabled by `@JooqTest` can be
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.jooq.DSLContext;
import org.jooq.DSLContext;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.jooq.JooqTest;
import org.springframework.boot.test.autoconfigure.jooq.JooqTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@JooqTest
@JooqTest
public
class ExampleJooqTests {
class ExampleJooqTests {
@Autowired
@Autowired
private DSLContext dslContext;
private DSLContext dslContext;
...
@@ -7681,13 +7662,10 @@ The following class shows the `@DataMongoTest` annotation in use:
...
@@ -7681,13 +7662,10 @@ The following class shows the `@DataMongoTest` annotation in use:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataMongoTest
@DataMongoTest
public class ExampleDataMongoTests {
public class ExampleDataMongoTests {
...
@@ -7705,12 +7683,9 @@ the following example:
...
@@ -7705,12 +7683,9 @@ the following example:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataMongoTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
@DataMongoTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
public class ExampleDataMongoNonEmbeddedTests {
public class ExampleDataMongoNonEmbeddedTests {
...
@@ -7735,12 +7710,9 @@ The following example shows a typical setup for using Neo4J tests in Spring Boot
...
@@ -7735,12 +7710,9 @@ The following example shows a typical setup for using Neo4J tests in Spring Boot
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataNeo4jTest
@DataNeo4jTest
public class ExampleDataNeo4jTests {
public class ExampleDataNeo4jTests {
...
@@ -7759,14 +7731,10 @@ as follows:
...
@@ -7759,14 +7731,10 @@ as follows:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@DataNeo4jTest
@DataNeo4jTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public class ExampleNonTransactionalTests {
public class ExampleNonTransactionalTests {
...
@@ -7791,12 +7759,9 @@ The following example shows the `@DataRedisTest` annotation in use:
...
@@ -7791,12 +7759,9 @@ The following example shows the `@DataRedisTest` annotation in use:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest;
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataRedisTest
@DataRedisTest
public class ExampleDataRedisTests {
public class ExampleDataRedisTests {
...
@@ -7824,13 +7789,10 @@ The following example shows the `@DataLdapTest` annotation in use:
...
@@ -7824,13 +7789,10 @@ The following example shows the `@DataLdapTest` annotation in use:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.ldap.DataLdapTest;
import org.springframework.boot.test.autoconfigure.data.ldap.DataLdapTest;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataLdapTest
@DataLdapTest
public class ExampleDataLdapTests {
public class ExampleDataLdapTests {
...
@@ -7848,12 +7810,9 @@ following example:
...
@@ -7848,12 +7810,9 @@ following example:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration;
import org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration;
import org.springframework.boot.test.autoconfigure.data.ldap.DataLdapTest;
import org.springframework.boot.test.autoconfigure.data.ldap.DataLdapTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataLdapTest(excludeAutoConfiguration = EmbeddedLdapAutoConfiguration.class)
@DataLdapTest(excludeAutoConfiguration = EmbeddedLdapAutoConfiguration.class)
public class ExampleDataLdapNonEmbeddedTests {
public class ExampleDataLdapNonEmbeddedTests {
...
@@ -7905,7 +7864,7 @@ The specific beans that you want to test should be specified by using the `value
...
@@ -7905,7 +7864,7 @@ The specific beans that you want to test should be specified by using the `value
==== Auto-configured Spring REST Docs Tests
==== Auto-configured Spring REST Docs Tests
You can use the `@AutoConfigureRestDocs` annotation to use {spring-rest-docs}[Spring REST
You can use the `@AutoConfigureRestDocs` annotation to use {spring-rest-docs}[Spring REST
Docs] in your tests with Mock MVC, REST Assured, or WebTestClient. It removes the need for
Docs] in your tests with Mock MVC, REST Assured, or WebTestClient. It removes the need for
the JUnit
rule
in Spring REST Docs.
the JUnit
extension
in Spring REST Docs.
`@AutoConfigureRestDocs` can be used to override the default output directory
`@AutoConfigureRestDocs` can be used to override the default output directory
(`target/generated-snippets` if you are using Maven or `build/generated-snippets` if you
(`target/generated-snippets` if you are using Maven or `build/generated-snippets` if you
...
@@ -7922,29 +7881,26 @@ Mock MVC and Spring REST Docs, as shown in the following example:
...
@@ -7922,29 +7881,26 @@ Mock MVC and Spring REST Docs, as shown in the following example:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.http.MediaType;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
@WebMvcTest(UserController.class)
@AutoConfigureRestDocs
@AutoConfigureRestDocs
public
class UserDocumentationTests {
class UserDocumentationTests {
@Autowired
@Autowired
private MockMvc mvc;
private MockMvc mvc;
@Test
@Test
public
void listUsers() throws Exception {
void listUsers() throws Exception {
this.mvc.perform(get("/users").accept(MediaType.TEXT_PLAIN))
this.mvc.perform(get("/users").accept(MediaType.TEXT_PLAIN))
.andExpect(status().isOk())
.andExpect(status().isOk())
.andDo(document("list-users"));
.andDo(document("list-users"));
...
@@ -8201,28 +8157,28 @@ which auto-configures one for you.
...
@@ -8201,28 +8157,28 @@ which auto-configures one for you.
[[boot-features-output-capture-test-utility]]
[[boot-features-output-capture-test-utility]]
==== OutputCapture
==== OutputCapture
`OutputCapture` is a JUnit `
Rule
` that you can use to capture `System.out` and
`OutputCapture` is a JUnit `
Extension
` that you can use to capture `System.out` and
`System.err` output. You can declare the capture as a `@R
ule` and then use `toString()`
`System.err` output. You can declare the capture as a `@R
egisterExtension` and then use
for assertions, as follows:
`toString()`
for assertions, as follows:
[source,java,indent=0]
[source,java,indent=0]
----
----
import org.junit.Rule;
import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.boot.test.rule.OutputCapture;
import static org.hamcrest.Matchers.*;
import org.springframework.boot.test.extension.OutputCapture;
import static org.junit.Assert.*;
public class MyTest {
import static org.assertj.core.api.Assertions.assertThat;
class MyTest {
@R
ule
@R
egisterExtension
public OutputCapture
capture
= new OutputCapture();
public OutputCapture
output
= new OutputCapture();
@Test
@Test
public void testName() throws Exception
{
void testName()
{
System.out.println("Hello World!");
System.out.println("Hello World!");
assertThat(
capture.toString(), containsString
("World"));
assertThat(
this.output.toString()).contains
("World"));
}
}
}
}
...
@@ -8929,16 +8885,15 @@ to limitations in the model kapt provides.
...
@@ -8929,16 +8885,15 @@ to limitations in the model kapt provides.
[[boot-features-kotlin-testing]]
[[boot-features-kotlin-testing]]
=== Testing
=== Testing
While it is possible to use JUnit 4 (the default provided by `spring-boot-starter-test`)
While it is possible to use JUnit 4 to test Kotlin code, JUnit 5 is recommended. JUnit 5
to test Kotlin code, JUnit 5 is recommended. JUnit 5 enables a test class to be
enables a test class to be instantiated once and reused for all of the class's tests. This
instantiated once and reused for all of the class's tests. This makes it possible to use
makes it possible to use `@BeforeClass` and `@AfterClass` annotations on non-static
`@BeforeClass` and `@AfterClass` annotations on non-static methods, which is a good fit for
methods, which is a good fit for Kotlin.
Kotlin.
JUnit 5 is the default and the vintage engine is provided for backward compatibility with
To use JUnit 5, exclude `junit:junit` dependency from `spring-boot-starter-test`, add
JUnit 4. If you don't use it, exclude `org.junit.vintange:junit-vintage-engine`. See the
JUnit 5 dependencies, and configure the Maven or Gradle plugin accordingly. See the
{junit5-documentation}/#dependency-metadata-junit-jupiter-samples[JUnit 5 documentation]
{junit5-documentation}/#dependency-metadata-junit-jupiter-samples[JUnit 5
for more details. You also need to
documentation] for more details. You also need to
{junit5-documentation}/#writing-tests-test-instance-lifecycle-changing-default[switch test
{junit5-documentation}/#writing-tests-test-instance-lifecycle-changing-default[switch test
instance lifecycle to "per-class"].
instance lifecycle to "per-class"].
...
...
spring-boot-samples/spring-boot-sample-junit-jupiter/pom.xml
View file @
1de6f682
...
@@ -25,21 +25,11 @@
...
@@ -25,21 +25,11 @@
<scope>
test
</scope>
<scope>
test
</scope>
<exclusions>
<exclusions>
<exclusion>
<exclusion>
<groupId>
junit
</groupId>
<groupId>
org.junit.vintage
</groupId>
<artifactId>
junit
</artifactId>
<artifactId>
junit
-vintage-engine
</artifactId>
</exclusion>
</exclusion>
</exclusions>
</exclusions>
</dependency>
</dependency>
<dependency>
<groupId>
org.junit.jupiter
</groupId>
<artifactId>
junit-jupiter-api
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.junit.jupiter
</groupId>
<artifactId>
junit-jupiter-engine
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
<plugins>
<plugins>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment