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
d096dcad
Commit
d096dcad
authored
May 31, 2017
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Add @JooqTest"
Closes gh-9343
parent
00a643f9
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
95 additions
and
33 deletions
+95
-33
spring-boot-features.adoc
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+14
-12
pom.xml
spring-boot-test-autoconfigure/pom.xml
+5
-5
JooqTest.java
...pringframework/boot/test/autoconfigure/jooq/JooqTest.java
+7
-7
spring.factories
...utoconfigure/src/main/resources/META-INF/spring.factories
+5
-5
JooqTestIntegrationTests.java
...oot/test/autoconfigure/jooq/JooqTestIntegrationTests.java
+7
-4
JooqTestWithAutoConfigureTestDatabaseIntegrationTests.java
...ooqTestWithAutoConfigureTestDatabaseIntegrationTests.java
+57
-0
No files found.
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
d096dcad
...
...
@@ -5834,9 +5834,13 @@ A list of the auto-configuration that is enabled by `@JdbcTest` can be
[[boot-features-testing-spring-boot-applications-testing-autoconfigured-jooq-test]]
==== Auto-configured jOOQ tests
`@JooqTest` is similar to `@JdbcTest` but for jOOQ related tests. By default it
will configure an in-memory embedded database and a `DSLContext`. Regular
`@Component` beans will not be loaded into the `ApplicationContext`:
`@JooqTest` can be used in a similar fashion as `@JdbcTest` but for jOOQ related tests. As
jOOQ relies heavily on a Java-based schema that corresponds with the database schema, the
existing `DataSource` will be used. If you want to replace it by an in-memory database you
can use `@AutoconfigureTestDatabase` to override those settings.
`@JooqTest` will configure a `DSLContext`. Regular `@Component` beans will not be loaded
into the `ApplicationContext`:
[source,java,indent=0]
----
...
...
@@ -5848,19 +5852,17 @@ will configure an in-memory embedded database and a `DSLContext`. Regular
@RunWith(SpringRunner.class)
@JooqTest
public class ExampleNonTransactionalTests {
public class ExampleJooqTests {
@Autowired
DSLContext create
;
private DSLContext dslContext
;
}
----
JOOQ tests are also transactional and rollback at the end of each test by default.
If that's not what you want, you can disable transaction management for a test or for
the whole as shown with
<<boot-features-testing-spring-boot-applications-testing-autoconfigured-jdbc-test,`@JdbcTest`>>
If you prefer your test to run against a real database, you can use the
`@AutoConfigureTestDatabase` annotation the same way as for `JdbcTest` or `DataJpaTest`.
JOOQ tests are transactional and rollback at the end of each test by default. If that's
not what you want, you can disable transaction management for a test or for the whole test
class as <<boot-features-testing-spring-boot-applications-testing-autoconfigured-jdbc-test,shown
in the example above>>.
A list of the auto-configuration that is enabled by `@JooqTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
...
...
spring-boot-test-autoconfigure/pom.xml
View file @
d096dcad
...
...
@@ -187,6 +187,11 @@
<artifactId>
hsqldb
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.jooq
</groupId>
<artifactId>
jooq
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.mongodb
</groupId>
<artifactId>
mongodb-driver-async
</artifactId>
...
...
@@ -227,10 +232,5 @@
<artifactId>
de.flapdoodle.embed.mongo
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.jooq
</groupId>
<artifactId>
jooq
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
</project>
spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/jooq/JooqTest.java
View file @
d096dcad
...
...
@@ -42,14 +42,13 @@ import org.springframework.transaction.annotation.Transactional;
* Using this annotation will disable full auto-configuration and instead apply only
* configuration relevant to jOOQ tests.
* <p>
* By default, tests annotated with {@code @JooqTest} will use an embedded in-memory
* database (replacing any explicit or usually auto-configured DataSource). Since
* jOOQ relies heavily on a Java-based schema that corresponds with the database schema,
* that is propably not what you want. The
* {@link AutoConfigureTestDatabase @AutoConfigureTestDatabase} annotation can be used
* to override these settings.
* By default, tests annotated with {@code @JooqTest} use the configured database. If
* you want to replace any explicit or usually auto-configured DataSource by an embedded
* in-memory database, the {@link AutoConfigureTestDatabase @AutoConfigureTestDatabase}
* annotation can be used to override these settings.
*
* @author Michael Simons
* @author Stephane Nicoll
* @since 2.0.0
*/
@Target
(
ElementType
.
TYPE
)
...
...
@@ -61,9 +60,9 @@ import org.springframework.transaction.annotation.Transactional;
@TypeExcludeFilters
(
JooqTypeExcludeFilter
.
class
)
@Transactional
@AutoConfigureJooq
@AutoConfigureTestDatabase
@ImportAutoConfiguration
public
@interface
JooqTest
{
/**
* Determines if default filtering should be used with
* {@link SpringBootApplication @SpringBootApplication}. By default no beans are
...
...
@@ -94,4 +93,5 @@ public @interface JooqTest {
*/
@AliasFor
(
annotation
=
ImportAutoConfiguration
.
class
,
attribute
=
"exclude"
)
Class
<?>[]
excludeAutoConfiguration
()
default
{};
}
spring-boot-test-autoconfigure/src/main/resources/META-INF/spring.factories
View file @
d096dcad
...
...
@@ -45,6 +45,11 @@ org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
# AutoConfigureTestDatabase auto-configuration imports
org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase=\
org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
# AutoConfigureJooq auto-configuration imports
org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq=\
org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\
...
...
@@ -54,11 +59,6 @@ org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,\
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
# AutoConfigureTestDatabase auto-configuration imports
org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase=\
org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
# AutoConfigureJson auto-configuration imports
org.springframework.boot.test.autoconfigure.json.AutoConfigureJson=\
org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\
...
...
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jooq/JooqTestIntegrationTests.java
View file @
d096dcad
...
...
@@ -37,6 +37,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import
static
org
.
springframework
.
boot
.
test
.
autoconfigure
.
AutoConfigurationImportedCondition
.
importedAutoConfiguration
;
/**
* Integration tests for {@link JooqTest}.
*
* @author Michael Simons
*/
...
...
@@ -58,15 +59,16 @@ public class JooqTestIntegrationTests {
@Test
public
void
testDSLContext
()
{
assertThat
(
this
.
dsl
.
selectCount
().
from
(
"INFORMATION_SCHEMA.TABLES"
).
fetchOne
(
0
,
Integer
.
class
)).
isGreaterThan
(
0
);
assertThat
(
this
.
dsl
.
selectCount
().
from
(
"INFORMATION_SCHEMA.TABLES"
)
.
fetchOne
(
0
,
Integer
.
class
)).
isGreaterThan
(
0
);
}
@Test
public
void
replacesDefinedDataSourceWithEmbeddedDefault
()
throws
Exception
{
public
void
useDefinedDataSource
()
throws
Exception
{
String
product
=
this
.
dataSource
.
getConnection
().
getMetaData
()
.
getDatabaseProductName
();
assertThat
(
product
).
isEqualTo
(
"H2
"
);
assertThat
(
this
.
dsl
.
configuration
().
dialect
()).
isEqualTo
(
SQLDialect
.
H
2
);
assertThat
(
product
).
startsWith
(
"HSQL
"
);
assertThat
(
this
.
dsl
.
configuration
().
dialect
()).
isEqualTo
(
SQLDialect
.
H
SQLDB
);
}
@Test
...
...
@@ -86,4 +88,5 @@ public class JooqTestIntegrationTests {
assertThat
(
this
.
applicationContext
)
.
has
(
importedAutoConfiguration
(
LiquibaseAutoConfiguration
.
class
));
}
}
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jooq/JooqTestWithAutoConfigureTestDatabaseIntegrationTests.java
0 → 100644
View file @
d096dcad
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
test
.
autoconfigure
.
jooq
;
import
javax.sql.DataSource
;
import
org.jooq.DSLContext
;
import
org.jooq.SQLDialect
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.jdbc.EmbeddedDatabaseConnection
;
import
org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Integration tests for {@link JooqTest}.
*
* @author Stephane Nicoll
*/
@RunWith
(
SpringRunner
.
class
)
@JooqTest
@AutoConfigureTestDatabase
(
connection
=
EmbeddedDatabaseConnection
.
H2
)
public
class
JooqTestWithAutoConfigureTestDatabaseIntegrationTests
{
@Autowired
private
DSLContext
dsl
;
@Autowired
private
DataSource
dataSource
;
@Test
public
void
replacesAutoConfiguredDataSource
()
throws
Exception
{
String
product
=
this
.
dataSource
.
getConnection
().
getMetaData
()
.
getDatabaseProductName
();
assertThat
(
product
).
startsWith
(
"H2"
);
assertThat
(
this
.
dsl
.
configuration
().
dialect
()).
isEqualTo
(
SQLDialect
.
H2
);
}
}
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