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());
}
}
Amikor a fenti tesztesetet futtatom, az első save() teszt mindig sikeres, ami azt jelenti, hogy a tábla létrejön, de a második mindig sikertelen, ami azt jelenti, hogy a data.sql nem kerül végrehajtásra. És a dao.count() mindig 0-t ad vissza. Hogyan tudom ezt megjavítani?