build.gradle
plugins {
id 'org.springframework.boot' version '2.2.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
}
group = 'com.spdemo'
version = '1.0'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude module: 'junit'
}
testImplementation 'org.junit.jupiter:junit-jupiter:5.4.0'
}
test {
useJUnitPlatform()
}
schema.sql
drop table IF EXISTS officers;
create TABLE officers (
id INT NOT NULL AUTO_INCREMENT,
rank VARCHAR(20) NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
);
data.sql
INSERT INTO officers(rank, first_name, last_name) VALUES('CAPTAIN', 'James', 'Kirk');
INSERT INTO officers(rank, first_name, last_name) VALUES('CAPTAIN', 'Jean-Luc', 'Picard');
INSERT INTO officers(rank, first_name, last_name) VALUES('CAPTAIN', 'Benjamin', 'Sisko');
INSERT INTO officers(rank, first_name, last_name) VALUES('CAPTAIN', 'Kathryn', 'Janeway');
INSERT INTO officers(rank, first_name, last_name) VALUES('CAPTAIN', 'Jonathan', 'Archer');
JdbcOfficerDAOTest.javba
@SpringBootTest
@ExtendWith(SpringExtension.class)
// @Transactional // tx for each test rolls back by default
public class JdbcOfficerDAOTest {
// @Qualifier("jdbcOfficerDAO")
private Logger logger = LoggerFactory.getLogger(JdbcOfficerDAOTest.class);
@Autowired
private OfficerDAO dao;
@Test
public void save() {
Officer officer = new Officer(Rank.LIEUTENANT, "Nyota", "Uhuru");
officer = dao.save(officer);
assertNotNull(officer.getId());
// assertTrue(!(officer == null));
logger.info("id is: " + officer.getId());
logger.info("I'm here");
}
@Test
public void findByIdThatExists() {
Optional<Officer> officer = dao.findById(1);
logger.info("here is the count: " + dao.count());
assertTrue(officer.isPresent());
// assertEquals(1, officer.get().getId().intValue());
}
}
When I'm running the above test case, the first save() test always passes which means the table is created but the second always fails meaning data.sql is not executed. And the dao.count() always returns 0. How can I fix this?