基于存储库端口规范,可以创建集成测试定义。该定义仅依赖于端口,并且不知道为持久化域状态而做出的任何底层技术决策。这个测试类将有一个属性作为验证期望的存储库接口(端口)的实例。以下显示了这些测试的样子:
Java
public class StudentRepositoryTest {
StudentRepository studentRepository;
一旦存储库测试定义完成,就可以为内存存储库创建一个测试运行时(集成测试): ?
Java
public class StudentRepositoryInMemoryIT extends StudentRepositoryTest {
@BeforeEach
public void setup() {
super.studentRepository = new StudentRepositoryInMemory();
}
}
或者使用Postgres对JPA进行更详细的集成测试: ?
Java
@Testcontainers
@ContextConfiguration(classes = {PersistenceConfig.class})
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class StudentRepositoryJpaIT extends StudentRepositoryTest{
@Autowired
public StudentRepository studentRepository;
@Container
public static PostgreSQLContainer container = new PostgreSQLContainer("postgres:latest")
.withDatabaseName("students_db")
.withUsername("sa")
.withPassword("sa");