2011-12-15 3 views
6

JUnit 테스트를 실행할 때 때때로이 오류가 발생합니다.분기 된 Java VM은 무엇을 의미합니까?

정확히 무엇이 오류인지 묻지 않습니다. Java VM 포크가 의미하는 것이 무엇인지 알고 싶습니다.

+0

일반적인 의미에서, 다른 JVM에서 jUnit 작업을 실행합니다. – CoolBeans

+4

그것은 당신이 나쁜 것을 갈라 놓았다는 것을 의미합니다 ... – Paul

+0

@Paul - lol ... – CoolBeans

답변

19

"forked VM"은 오류가 아닙니다 (오류가 발생해도 문제가 될 수 있음).

컴파일 및 테스트의 다양한 측면 (예 : Maven)과 관련된 일부 도구는 Java로 작성되고 JVM을 사용하여 실행됩니다.

VM을 포크하지 않고 애플리케이션에 단위 테스트를 실행하면 Maven은 Maven이 실행중인 동일한 VM 내에서 테스트를 실행합니다. 따라서 특정 VM 전체 설정 (예 : 일부 시스템 속성)의 영향을받을 수 있습니다.

Maven으로 인한 부작용을 피하려면 fork 된 VM 즉 OS에서 다른 프로세스로 실행되는 완전히 다른 VM에서 테스트를 실행할 수 있습니다.

는 (이 메이븐 그냥 예입니다, 다른 도구에 적용 할 수 있습니다.)

갈래의 VM 적어도 다시 시작하고 이러한 단위 테스트를 조율 다른 Java 응용 프로그램에 제공 할 수 있습니다 충돌합니다. 동일한 VM 내에서이 테스트를 실행하는 경우 테스트를 시작한 응용 프로그램이 중단되어 반환되는 정보가 거의 없습니다.

2

A 'fork'is 리눅스에서 다른 프로세스 (느슨하게) 실행을 나타내는 데 사용되는 용어. 이 경우 fork 된 Java VM은 여러 테스트 사이에 상태 오염이 발생하지 않도록 클래스 또는 메소드별로 단위 테스트를 격리하는 데 사용되는 하위 프로세스입니다.

JUnit 개미 작업은 here에서 볼 수 있듯이 여러 분기 모드를 지원합니다.

JUnit을 사용할 때 분기 된 VM이 사망했다는 오류가 표시됩니다. 즉, 테스트가 인 경우이 충돌하고 JUnit 러너 (일반적으로 개미)가 출력을 가져올 수 없음을 의미합니다.

충돌의 원인을 해결해야합니다.

관련 문제