Comments (2)
The problem is that you call the embeddedPostgres().getPostgresDatabase()
method multiple times. Each call returns a new instance of the data source and the transaction management cannot work properly. In the case of the h2 database you are using a singleton bean and that's why it works.
However, you should not create the instance yourself, but use @AutoConfigureEmbeddedDatabase
annotation instead. So the test class should look something like this:
@RunWith(SpringRunner.class)
@Transactional
@ContextConfiguration
@AutoConfigureEmbeddedDatabase(beanName = "dataSource")
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class JdbcTest {
@Configuration
static class Config {
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
public PlatformTransactionManager platformTransactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
@Autowired
private JdbcTemplate jdbc;
@Test
@Rollback(value = false)
public void test1() {
jdbc.execute("create table test_table (test_field integer)");
jdbc.execute("insert into test_table values(1)");
List<Integer> results = jdbc.queryForList("select test_field from test_table", Integer.class);
Assert.assertFalse(CollectionUtils.isEmpty(results));
Assert.assertEquals(1, results.size());
}
@Test
@Rollback
public void test2() {
jdbc.execute("insert into test_table values(2)");
List<Integer> results = jdbc.queryForList("select test_field from test_table", Integer.class);
Assert.assertFalse(CollectionUtils.isEmpty(results));
Assert.assertEquals(2, results.size());
}
@Test
public void zTest() {
List<Integer> results = jdbc.queryForList("select test_field from test_table", Integer.class);
Assert.assertFalse(CollectionUtils.isEmpty(results));
Assert.assertEquals(1, results.size());
}
}
from embedded-database-spring-test.
@tomix26, thank you so much for the explanation! Sorry for bothering.
Best regards,
from embedded-database-spring-test.
Related Issues (20)
- Spring Boot 3.1 Support HOT 8
- Upgrade to Embedded Postgres 2.0.5
- All data providers being required when only a specific one is specified HOT 5
- Zonky "initdb" file getting returning file not found HOT 4
- Multiple PostgreSQL clusters (instances) HOT 1
- Tests using @FlywayTest(locationsForMigrate) failing after changing spring and flyway versions HOT 3
- Setting PostgreSQL max_connections value in properties gives PSQLException HOT 2
- Custom docker image with test data: How to use as a template HOT 4
- [Q]: Any plans to update testcontainers? HOT 5
- Flyway migration in multitenant application HOT 1
- Transitive vulnerable dependency HOT 1
- Use Zonky provider with PostGIS HOT 3
- For Flyway 9.9+ JavaMigration beans are not applied HOT 4
- Upgrade to Embedded Postgres 2.0.7
- db rider with zonkyio embedded postgresql HOT 3
- data type (1111, 'jsonb') not recognized and will be ignored HOT 1
- DockerClientProviderException HOT 1
- Spring Boot 3.3 Support HOT 6
- How to set or find out user & password for running DB ? HOT 2
- How to run schema creation SQL statements before context initialization? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from embedded-database-spring-test.