일부 테스트 목적으로는 모든 테스트를 실행할 때마다 내 부두 서버를 재시작하지 않아도됩니다.junit을 서버로 실행하고 변경 사항을 주입 하시겠습니까?
jrebel을 사용하면 소스 변경 사항을 직접 적용 할 수 있습니다.
변경 사항을 동적으로 주입 한 다음 서버를 다시 시작하지 않고도 테스트를 다시 실행할 수있는 방법으로 내 부두 서버를 실행할 수 있습니까?
일부 테스트 목적으로는 모든 테스트를 실행할 때마다 내 부두 서버를 재시작하지 않아도됩니다.junit을 서버로 실행하고 변경 사항을 주입 하시겠습니까?
jrebel을 사용하면 소스 변경 사항을 직접 적용 할 수 있습니다.
변경 사항을 동적으로 주입 한 다음 서버를 다시 시작하지 않고도 테스트를 다시 실행할 수있는 방법으로 내 부두 서버를 실행할 수 있습니까?
삽입하려는 변경 사항의 종류에 따라 다릅니다.
그렇다면 여기서 더 깊은 문제가 있다고 생각합니다. Jetty를 재시작하는 것은 테스트 수준의 관점에서해야 할 올바른 일입니다. 각 테스트가 깨끗한 페이지에서 시작하여 테스트 간 종속성의 위험을 최소화합니다. 반면에, 이것은 (시간이 많이 소요되는) 비용이 많이 들고 스위트의 실행 속도가 느려집니다.
내가 당신이라면 다음과 같이 처리 할 것입니다. 테스트 할 코드 (아마도 : 서블릿)를 Jetty 인프라에 의존하지 않고 독립 실행 형으로 실행할 수 있도록 리펙토링합니다. 예를 들어 서블릿 클래스 SomeServlet
이 doGet()
메소드 인 경우 MyServelt
이 goGet()
인 메시지를 MyRequest
, MyResponse
매개 변수로 구현하도록 리펙토링합니다.
이렇게하면 Jetty 서버없이 MyServlet
을 단위 테스트 할 수 있습니다. 이렇게하면 더 빨리 테스트 할 수있을뿐만 아니라 디버깅 세션을 쉽게 수행 할 수 있으며 구성 요소를 더 쉽게 분리 할 수 있습니다. 물론, 위임을 통해 Servelt 인터페이스를 MyServelt 객체에 적용하는 클래스 인 배관 코드를 추가해야합니다.
예, 재 테스트 재시작은 테스트 수준의 관점에서 할 때 옳은 일입니다. 그러나 일반적으로 테스트를 수행하는 경우 프로젝트의 작은 부분에서 테스트를 다시 실행합니다. 때로는 테스트의 수가 매우 적습니다. 최종 테스트 문제를 위해 당신은 품질 안전 방식으로 작동하지만 빠른 개발을 위해서는 주입이 충분할 것입니다. – axaluss
junit을 서버 및 jrebel과 결합하는 것이 좋습니다.) 설명 된 방식으로 – axaluss