Java 프로그램에서 jUnit 테스트 케이스를 실행하고 시간 초과 후 실행을 중지하려고합니다. 테스트를 실행하기 위해 JUnitCore의 run (Request) 메소드를 사용한다.특정 조건에서 Thread.suspend()를 사용해도 괜찮습니까?
테스트 클래스에는 많은 시간이 소요되거나 종료되지 않는 메소드가 들어 있습니다. 따라서 나는 그 실행을 멈출 수 있기를 원한다.
그러나, jUnit의 pleaseStop 플래그는 완료된 테스트 케이스 후에 만 취해지며, 메소드는 인터럽트 될 수 없으며 컨텐츠 (예 : 닫혀있을 수있는 사용 된 IO 리소스)를 알 수 없다. 또한 프로세스 사용을 피하고 싶습니다.
단일 테스트 케이스의 실행을 중지하는 다른 방법이 있습니까?
스레드간에 리소스를 공유하지 않는 조건에서 Thread.suspend()을 사용해도 괜찮습니까?
는 당신은 개별 테스트 또는 클래스의 모든 테스트에 시간 제한 규칙에 시간 제한 매개 변수를 사용할 수 있습니다
테스트의 경우 경쟁 조건으로 인해 테스트가 실패하는 것이 필수적이지 않은 한 스레드를 일시 중단하는 것이 좋습니다. – Gray
테스트 코드를 향상시킬 수 있습니까? "정지"하지 않고 자원을 사용할 수 없거나 블로킹 (즉, 코드에 타임 아웃을 추가) 할 때 자체적으로 작동 할 수 있도록 변경할 수 있다면 더 좋을 것입니다. 프로덕션에서 중단 된 프로세스는 어떻게됩니까? 또한 무한 루프에서 처리중인 모든 스레드에 대해 "cancel"메소드를 추가하는 것에 대해 생각해보십시오. – Brad
아니요, 프로그램의 목적은 돌연변이 테스트를 실행하는 것입니다. 테스트 케이스는 수정할 수 없거나 알 수 없습니다. – nrainer