예, 프로덕션 코드와 마찬가지로 응용 프로그램 컨텍스트를로드 한 JUnit 테스트 클래스를 만든 다음 속성 값이 주입되었는지 테스트하는 테스트 메서드를 실행할 수 있습니다. 이 예 MyServiceBean.java
에서
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {AppConfig.class})
public class SpringApplicationTest {
@Autowired
private MyServiceBean serviceBean;
@Test
public void shouldExecuteServiceBean_andProduceExpectedOutcome() {
//TODO test setup
serviceBean.doSomething()
//TODO assert output
}
}
는 스프링 의존성 주입을 모두 포함하여 응용 프로그램의 엔드 - 투 - 엔드 로직을 테스트 할 수 있도록, 당신의
Main
클래스에서 실행됩니다 클래스입니다. 이를 "행복한 경로"테스트 시나리오라고 생각하십시오. 저는 모든 프로젝트에서 스프링 인젝션이 정확하고 오류없이로드되도록 프로젝트에 항상 최소한 하나의 테스트를 포함합니다. 코드를 작성하고 배포하기 전에 오류를 잡을 필요가 없습니다.
위 예제에서 AppConfig.java
은 코드가 배포 될 때 사용하는 것과 동일한 스프링 구성 클래스입니다. 테스트 용으로 특별히 일부 등록 정보/bean을 겹쳐 쓰는 다른 구성 클래스를 추가하려고합니다. 당신이 아니라 다른 서비스보다 (즉,이 in-memory database 사용) 어려운 테스트 할 종속성을 조롱하고, 당신이 "로컬 호스트"에 대해 테스트 할 수 있도록 또한 속성을 재정의 할 수 있습니다 테스트를 전용 클래스를 사용
@ContextConfiguration(classes = {AppConfig.class, TestConfig.class})
하는 수도 있고 수도 사용할 수 없으므로 (테스트 설정에서 동등한 localhost 서비스를 만들 수있는 한).
참고 : 너무 많은 종속성 또는 외부 종속성을 쉽게 바꿀 수 없기 때문에 응용 프로그램을 테스트하기가 어려울 경우 느끼는 고통은 응용 프로그램을 변경하는 방법에 대한 생각을 시작하기에 좋은 안내서입니다. 테스트 용이성을 지원하는 아키텍처. 위의 개념을 사용하여 응용 프로그램의 일부만 테스트 할 수도 있습니다.
'spring-boot-starter-test'를 확인 했습니까? – sfat
하지만 왜 당신은 unittest 봄 프레임 워크 instied 귀하의 bussiness 논리의 내게 신비입니다 – Antoniossss