我有点困惑。
在这里说这是单元测试: https://www.baeldung.com/spring-jpa-test-in-memory-database
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
classes = { StudentJpaConfig.class },
loader = AnnotationConfigContextLoader.class)
@Transactional
public class InMemoryDBTest {
@Resource
private StudentRepository studentRepository;
@Test
public void givenStudent_whenSave_thenGetOk() {
Student student = new Student(1, "john");
studentRepository.save(student);
Student student2 = studentRepository.findOne(1);
assertEquals("john", student2.getName());
}
}
在这里它说这是一个集成测试: https://www.baeldung.com/spring-boot-testing
@DataJpaTest
public class EmployeeRepositoryIntegrationTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private EmployeeRepository employeeRepository;
@Test
public void whenFindByName_thenReturnEmployee() {
// given
Employee alex = new Employee("alex");
entityManager.persist(alex);
entityManager.flush();
// when
Employee found = employeeRepository.findByName(alex.getName());
// then
assertThat(found.getName())
.isEqualTo(alex.getName());
}
}
在两种情况下,它都会保存。但是对于一个人,他们说这是一个单元测试,对于其他人,他们说这是一个集成测试。我看到的唯一区别是,在第一种情况下,它是通过配置创建数据库的。在第二种情况下,spring完全为我们完成了任务。
我所知道的集成测试包含更多不同的部分,在第二种情况下,它不包含任何内容。